使用后台服务开发活动的最佳实践

时间:2011-02-05 03:07:00

标签: android manifest background-process alarmmanager

我的应用程序有一个用于UI的活动和一个用于后台轮询乐趣的服务。看起来像标准票价。

  1. AlarmManager是否可以在没有调用活动OnCreate的情况下触发服务意图?

  2. 放置活动和放大器是否有任何好处;服务到不同的应用?这会创建2个apk并且无法将其作为一个应用程序投入市场吗?你能以某种方式将2个申请放入一个清单吗?

  3. 关于两者之间的沟通:

  4. - 如果活动&服务是同一个应用程序的一部分 - 我不能只在应用程序范围内存储公共对象(如User对象)以便共享2个?

    - 好像我甚至不需要打扰AIDL - 这两个人在应用程序范围内也可能只有弱引用 - 他们可以通过这种方式相互调用方法吗?或者他们应该使用某种观察者模式或BroadcastListener事物互相发布/互相?

1 个答案:

答案 0 :(得分:3)

  

AlarmManager是否可以在没有调用活动OnCreate的情况下触发服务意图?

  

将活动和放大器放在一起有什么好处服务到不同的应用程序?

恕我直言,没有。

  

这会创建2个apk并且无法将其作为一个应用程序投入市场吗?

  

你能以某种方式将2个应用程序放入一个清单吗?

从纯XML的角度来看,清单中有多个<application>元素的空间。但是,AFAIK只支持一种。

  

如果活动&amp;服务是同一个应用程序的一部分 - 我不能只在应用程序范围内存储公共对象(如User对象)以供2分享吗?

对于非常快速的事情,是的。但是,请记住,您的服务可能会被关闭(由Android,用户等),之后您的流程可能会被终止,而您的Application对象会 poof 。我只将它用于轻缓存。

  

好像我甚至不需要打扰AIDL

正确 - 只需要进程间服务绑定。

  

这两个人在应用程序范围内也可能只有弱引用

我不会在一百万年里那样做。请负责任地使用平台。活动和服务有很多方式可以进行通信但仍保持松散耦合(或者,在本地绑定模式的情况下,以Android感知方式紧密耦合)。

  

或者他们应该用某种Observer Pattern或BroadcastListener东西相互发布/互相?

沿着这些方向的东西会更好。虽然活动和服务可能同时在同一个流程中共存,但它们并非旨在直接相互关联。