Question

Is there any fundamental difference in binding a service to an android.app.Activity vs binding it to an android.app.Application. I want to bind the service to an Application because I want to keep some global state/data in the Application instead of duplicating it in all my activities.

Thanks.

Was it helpful?

Solution

No. There is no fundamental difference.

That said, subclassing android.app.Application is a very good place to store global/state data. There is only one instance and everything that derives from Context has access to it.

I'm also sure that binding a service to an application will result in some odd lifetimes if you aren't careful. What I mean is that even though your app is out of sight and has no activities alive, your application could still exist because your service still exists. Your service still exists because your application still exists. You would have to manually shut down the service based on some event other than onDestroy.

OTHER TIPS

answer of @Jere.Jones is not 100% correct. You have one Instance of Application class per Process. So if you run your service in a seperate Process e.g. with

 <service
        android:name=".engine.NetworkService"
        android:exported="false"
        android:process=":xxxService" />

you have two seperate Instances of Appliaction, which means if you need to "hold a state" you must ensure its either not Process crossing, or you have to use IPC to sync these sates.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top