1

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

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

  1. 我已经尝试过 startService 和 bindService。startService 的问题是我没有取回服务参考以供将来使用。如果我使用 bindService 将使我的服务在整个应用程序生命周期中可见,直到我明确停止它。哪种方式适用于我的情况?

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

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

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

4

1 回答 1

1

在您的扩展应用程序 oncreate 中绑定服务并创建一个公共方法 (getBinding),该方法返回该绑定对象......在您的根/默认活动“A”中,通过 getBinding 方法对强制转换的 getApplication 对象检索 ..当所有活动关闭时解除绑定(与每个 getBinding 方法保持计数器)

检查这个干净地绑定/取消绑定到应用程序中的服务

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

于 2013-02-06T07:45:17.970 回答