Data gaps and wrong categorization

I’ve a iPhone 15 Pro and latest iOS and Arc.

Lately, maybe last month or more, Arc is having a lot of data gaps. Even when it’s the only app open.

Also, seems like it can’t differentiate between walking and driving much anymore. Tho when I go to split things, it shows the trace as walking or car as expected. :thinking:

In the past, I rarely got data gaps.

I’ve just turned on the privacy indicator to see if that helps. Any other suggestions welcome.

Hmm. The other thing I’d recommend, if you’re not doing so already, is running Arc Mini too. With both running you’re largely protected from data gaps, because one will take over recording if the other is terminated.

But from what you describe it sounds like there’s something weirder going on, beyond just normal iOS’s moods and app terminations.

Even when it’s the only app open.

By this do you mean other apps have been swiped closed? If so, I’d suggest as a general rule not to do that. It will worsen the phone’s energy efficiency and battery life on average, and possibly teach it bad behaviours in terms of when to keep apps alive in the background. Although I doubt that would be the cause of Arc’s weird behaviour, so that’s just an aside.

This also suggests something weirder is going on. Though it’s hard to guess what. It’d be worth having a look at the Classifier Debug View in Arc Mini, to see what the classifier models look like for some common locations. That view will show you the classifiers being used for your current location, so it’d be worth checking it when in one of the areas where it’s been making weird activity type classification decisions.

Although given that you’re seeing correct classification when you go into Individual Segments, maybe that’s a red herring, and instead it’s something to do with a backlog of processing timeline data. Which could be happening if the app is getting terminated frequently.

It’s probably worth trying to see if you can spot any patterns of where and when it’s getting terminated. If the data gaps are happening in common locations, during common trips, etc.

Ok, so:

  1. install arc mini
  2. stop swiping apps closed. (I always thought that was a way to ensure Arc would stay active)
  3. start paying attention to any patterns

Thanks for the guidance. Let’s give this some time and see what I discover.

On iOS it’s kind of the opposite of how things work on desktop operating systems.

On desktop you ideally want to terminate other apps that you’re not using, because they can continue to use CPU time in the background, and will continue using up memory until terminated.

But on iOS when an app goes into the background it’s almost always immediately put into “suspended” state , ie frozen, so that it’s no longer able to do anything, use any CPU time, etc. So background apps don’t typically use any energy or CPU time in the background, unless they have specific permission to continue running in the background (eg background location recording, like Arc).

iOS also acts differently from desktop OSes in terms of memory use, in that it will also completely terminate and remove from memory background apps when it wants to use that memory for something else. Desktop OSes don’t typically do that (outside of extreme conditions), so background apps just keep staying there holding onto memory.

So yeah, on desktop you kind of want to housekeep apps by explicitly terminating them, but on iOS you’re better off not doing that. Oh, and the reason why not to isn’t just because iOS is doing it itself, but also because an app coming back from suspended state uses much less energy than having to do a fresh launch.

Coming back from suspended state costs essentially nothing - the app is just unfrozen and goes back to doing whatever it was doing, at essentially no cost. But a fresh launch after termination means the app has to go through its full startup sequence, loading data, building UI, etc, so it’s costly. That’s why swiping apps closed can often lead to worse battery life over the day. It’s better to have them suspended than terminated.

Yeah, I think unfortunately other than installing Arc Mini that’s the best we’ve got. Something weird is going on, but it’s not obvious what yet. So hopefully we can catch it in the act, and pin it down to some specific conditions!

Go figure. The problem seems to have gone away (I also have Mini running)

Thanks. So counterintuitive.

Yep. Unfortunately that’s my life! These background terminations / data gaps often don’t follow any obvious patterns, and can come and go randomly.

There might be months of perfect recording, with no obvious terminations (Arc and Mini might show weeks long uptimes in the debug views), then for no apparent reason there’ll start to be terminations every day. Then it’ll all go back to normal again, even though seemingly nothing has changed :man_shrugging:t2:

I’m about to ship a new companion app, Arc Timeline Recorder, which is purely for recording, with almost no UI, and with no responsibility for doing daily housekeeping or other background tasks. That means that it always uses under 20-30MB of memory (making it a very unlikely target for terminations due to memory use), and with no chance of spiking or sustained energy use.

The new Recorder app should then be able to stay alive almost permanently (almost, because iOS still sometimes terminates all background apps, for Reasons), and give the absolute best chance of avoiding data gaps.

I just need to finish up the onboarding for the new app, to get it past App Store review. Hopefully will be live by next week!

1 Like