代码之家  ›  专栏  ›  技术社区  ›  Soumya Simanta

将服务绑定到android.app.activity,而不是将其绑定到android.app.application

  •  17
  • Soumya Simanta  · 技术社区  · 14 年前

    有没有 基本的 将服务绑定到 android.app.Activity 将它绑定到 android.app.Application . 我想 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 .

    谢谢。

    2 回复  |  直到 11 年前
        1
  •  14
  •   Jere.Jones    14 年前

    不,没有 基本的 差异。

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

    如果您不小心的话,我相信将服务绑定到应用程序会导致一些奇怪的生命周期。我的意思是,即使您的应用程序不在视线范围内并且没有活动,您的应用程序仍然可以存在,因为您的服务仍然存在。您的服务仍然存在,因为您的应用程序仍然存在。您必须根据OnDestroy以外的事件手动关闭服务。

        2
  •  3
  •   Denny1989    11 年前

    @jere.jones的回答不是100%正确。每个进程有一个应用程序类实例。因此,如果您在单独的过程中运行服务,例如

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

    您有两个独立的应用程序实例,这意味着如果需要“保持状态”,必须确保其不进行进程交叉,或者必须使用IPC来同步这些状态。