让app小部件与服务进行通信的最佳方法是什么

时间:2013-08-06 19:29:07

标签: android android-service android-broadcast android-appwidget

当用户在其上按Service时,我希望我的AppWidget(主屏幕小部件)与Button进行通信。只要appWidget存在,Service就需要永久运行。据我所知,对小部件的onClick事件作出反应的唯一方法是通过广播发送PendingIntents。目前,我正在MainActivity收到这些邮件,并将其转发给正在投放的Service

所以实际上我正在使用我的MainActivity作为我的小部件传入事件的某种代理。这是正确的方法吗?我希望直接与我的Service沟通 - 这可能吗?

1 个答案:

答案 0 :(得分:4)

  

只要appWidget存在,该服务就需要永久运行

这是Android中的反模式。结果也是有效的。如果您希望获得可靠的结果,并且用户不会使用任务杀手攻击您,请重新设计您的应用以免需要永久性服务。

  

据我所知,对小部件onClick事件做出反应的唯一方法是通过广播发送PendingIntents。

PendingIntent上有三种工厂方法:getActivity()getService()getBroadcast()PendingIntent执行startActivity(),{分别为{1}}和startService()

  

我希望直接与我的服务部门联系 - 这可能吗?

使用sendBroadcast() getService()代替PendingIntentgetActivity() getBroadcast()