开发者

Binding a Service to an android.app.Activity vs Binding it to an android.app.Application

开发者 https://www.devze.com 2023-01-05 03:36 出处:网络
Is th开发者_Go百科ere 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 wan

Is th开发者_Go百科ere 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.


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消