将一个服务绑定到一个android.app.Activity vs绑定到一个android.app.Application

将服务绑定android.app.Activity与将其绑定到android.app.Application是否有根本区别? 我想服务绑定Application因为我想在Application中保留一些全局状态/数据,而不是在我的所有活动中复制它 。

谢谢。

不,没有根本的区别。

也就是说,子类android.app.Application是存储全局/状态数据的好地方。 只有一个实例,从上下文派生的所有内容都可以访问它。

如果你不小心的话,我也确定将一个服务绑定到一个应用程序将会导致一些奇怪的生命周期。 我的意思是即使你的应用程序看不见,也没有任何活动,你的应用程序仍然存在,因为你的服务仍然存在。 你的服务依然存在,因为你的应用程序依然存 您将不得不手动closures基于onDestroy以外的事件的服务。

@Jere.Jones的回答不是100%正确的。 每个进程有一个应用程序类的实例。 所以如果你在一个单独的过程中运行你的服务,例如

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

你有两个独立的Appliaction实例,这意味着如果你需要“保持一个状态”,你必须确保它不是过程跨越,或者你必须使用IPC来同步这些状态。