← Back to team overview

ubuntu-phone team mailing list archive

Re: Background services: a problem that we need to face

 

Michal,

CyanogenMod uses Privacy Guard to allow you to fine tune what permissions
apps are allowed. For example, if I notice an app stays awake and drains my
battery I can deny it permission to keep the device awake. Also, if I have
issues with excessive permissions (QR code reader needing location, SD card
read, etc) I can prevent app using them. While this could cause particular
issues for some apps, my experience has been fairly positive.

I've included screenshots of the options I have set for Facebook.
On Jun 26, 2014 12:09 PM, "Michal Suchanek" <hramrach@xxxxxxxxx> wrote:

> On 25 June 2014 22:40, Alex Chiang <achiang@xxxxxxxxxxxxx> wrote:
> > On Wed, Jun 25, 2014 at 12:29 PM, Rodney Dawes
> > <rodney.dawes@xxxxxxxxxxxxx> wrote:
> >> On Wed, 2014-06-25 at 14:44 -0400, Marc Deslauriers wrote:
> >>> On 14-06-25 02:11 PM, Rodney Dawes wrote:
> >>> >
> >>> > I don't now, nor have I ever, owned any iOS devices. Nor have I
> >>> > developed any apps for them.
> >
> > I do own an iOS device (iPhone 4s).
> >
> >>> >
> https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW20
> >>> >
> >>> > Apps can have long-running background tasks for certain things, on
> iOS.
> >>>
> >>> Apps can only run in the background for a limited time, and they can
> use certain
> >>> APIs to get woken up regularly, but they can't run in the background
> save for a
> >>> few exceptions. This is why IRC apps on iOS disconnect after a few
> minutes, or
> >>> are designed for jailbroken devices.
> >>
> >> No, apps can run in the background indefinitely, per the documentation
> >> link I provided above, in order to handle a situation in the specific
> >> list of situations described in that documentation.
> >
> > No -- iOS apps do not *actually* run in the background indefinitely.
> > This is trivially observable on an iPhone.
> >
> > - start Strava (GPS app to track your running/cycling data)
> > - launch the camera in HDR mode, take a photo of the awesome scenery
> > - load Google Maps app to figure out your next turn
> >
> > Go back into Strava and observe that it has been killed by the OS.
> > Strava will ask you if you wish to resume recording from last known
> > point.
> >
> > I haven't used your automotive app you point out, but I would bet
> > (0.25 bitcoins ;) that if you tried a similar sequence of actions, you
> > would eventually see the OS kill off the app.
> >
> > What you perceive as "indefinite background app" is in reality the iOS
> > framework blackbox doing a lot of heavy lifting and making policy
> > decisions on behalf of the apps and the end user. Strava pretends to
> > be an indefinitely running app recording GPS coordinates, but the
> > actual implementation is more similar to Strava subscribing to the
> > location services API, and writing a little callback to do something
> > with the data that comes in occasionally.
> >
> > [note: as I have never seen the iOS framework code, I am only guessing
> > here, but my guesses are at least based on a careful reading of the
> > APIs and actual experience with iOS apps ;) ]
> >
> >> Skype does not
> >> automatically disconnect after a few minutes. And AFAIK, it does not
> >> need to remain in the foreground to stay on a call.
> >
> > Skype may not automatically disconnect, but that does not mean it is
> > actually running in the background. Again, the iOS telephony framework
> > is running in the background and Skype subscribes to the API. It gets
> > woken up by the telephony service when an incoming call comes in.
> >
> >> Maybe the app with full UI needs to remain open always on iOS, and there
> >> are not actual separate background processes without UI, but they do not
> >> need to remain in the foreground to remain processing.
> >
> > Ubuntu's approach is modeled after the iOS approach, which is to let
> > apps subscribe to a functional API (play background music, location
> > services, etc.). The actual implementation of how the OS accomplishes
> > the perception of "background" tasks is thus abstracted from app
> > developers.
> >
> > Android is proof that users cannot make informed decisions. Observe
>
> And how is a user supposed to make a decision on Android?
>
> Every single app requests access to everything.
>
> There is no way to restrict access to some resources and still run the app.
>
> Don't confuse the platform not providing the ability to make a
> decision with user inability.
>
> Thanks
>
> Michal
>
> --
> Mailing list: https://launchpad.net/~ubuntu-phone
> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~ubuntu-phone
> More help   : https://help.launchpad.net/ListHelp
>

Attachment: Screenshot_2014-06-29-14-27-41.png
Description: PNG image

Attachment: Screenshot_2014-06-29-14-27-57.png
Description: PNG image

Attachment: Screenshot_2014-06-29-14-28-11.png
Description: PNG image

Attachment: Screenshot_2014-06-29-14-28-23.png
Description: PNG image


References