与应用程序生命周期密切相关的本地服务实现

时间:2013-02-06 07:29:34

标签: android android-activity android-service

在我的应用程序中。我已经扩展了Application类,比如说MyApp,我有几个活动说A,B,C,D,其中A是默认的Activity或root Activity。我想在MyApp的OnCreate中启动一个服务(比如MyService),当用户从我的应用程序注销时停止它,

但是我需要一种强有力的方式来在我的活动(A,B,C,D),MyApp和MyService之间进行通信。现在应用程序从Memory第二次启动。 MyApp的OnCreate将不会被调用,因此我想从活动A内的SignIn按钮的OnClick启动服务。现在我有很多问题: -

  1. 我已尝试使用startService的startService和bindService问题,因为我没有得到Service引用以供将来使用。如果我使用bindService将使我的服务在应用程序生命周期中可见,直到我明确地停止它。哪种方式适用于我的情况?

  2. 在Service和MyApp / Activities之间实现通信的最佳方式是什么?通信我指的是两种类型的通信,1。需要UI线程,即启动一些活动,显示一些对话等.2。像myService.doSomehing()。

  3. 服务有一个进行网络通信的线程,在应用程序的生命周期内不应该关闭。 START_STICKY对我有用,或者我需要为此做出额外的安排。

  4. 这个应用程序应该运行GingerBread +设备...

1 个答案:

答案 0 :(得分:1)

将服务绑定到扩展应用程序中,并创建一个公共方法 (getBinding)返回该绑定对象...在你的root / default活动中'a'oncreate通过getteinding方法对casted getApplication对象进行检索..取消绑定所有活动关闭时(保持与每个getBinding方法的计数器)

检查此Cleanly binding/unbinding to a Service in an Application

所以1)绑定服务 2)绑定obj 3)START STICKY就足够了