System Status App Icon

System Status


Why can't System Status run in the background like Facebook or other apps?

iOS doesn't provide true background execution like a desktop operating system; it only provides specific-purpose background execution modes. The reason for this is battery saving — so that misbehaving apps won't drain your device while running in the background.

The background execution modes are the following:

  • audio—The app plays audible content to the user while in the background. (This content includes streaming audio or video content using AirPlay.)
  • location—The app keeps users informed of their location, even while it is running in the background.
  • voip—The app provides the ability for the user to make phone calls using an Internet connection.
  • newsstand-content—The app is a Newsstand app that downloads and processes magazine or newspaper content in the background.
  • external-accessory—The app works with a hardware accessory that needs to deliver updates on a regular schedule through the External Accessory framework.
  • bluetooth-central—The app works with a Bluetooth accessory that needs to deliver updates on a regular schedule through the Core Bluetooth framework.
  • bluetooth-peripheral—The app supports Bluetooth communication in peripheral mode through the Core Bluetooth framework.
  • fetch - The app regularly downloads and processes small amounts of content from the network.
  • remote-notification - The app’s response to a push notification includes optionally downloading content related to the notification. The purpose of downloading the content in the background is to incorporate it and be able to present it immediately when the user responds to the push notification.

If the location mode is used in satellite-precision mode, the app is updated quite frequently with new location data and could perform some additional operations (like measuring CPU, memory, etc., in the case of System Status). The problem is that battery usage is really high in this mode, so the battery would last only a few hours. With less precise location updates, the update is made only when, e.g., cell towers change — but again, this isn't usable for System Status, as people probably wouldn't run between cell towers to get background app updates.

The only "true" all-time background execution mode is the "audio" one, but Apple will reject any app that isn't an audio player and requests this mode. In the other modes, the app is suspended almost all the time, and iOS wakes it up only on special occasions (the interval depends on the iOS state but can be something like 15 minutes or even more). After that, the app has only a few seconds before it is suspended by iOS again.

This works fine for applications like Facebook or Twitter, which update their content in the background this way, but for applications like System Status, such background execution is useless — it needs to monitor CPU, battery, or memory every second, not every 15 minutes or when iOS decides it's time.