当用户在其上按Service
时,我希望我的AppWidget(主屏幕小部件)与Button
进行通信。只要appWidget存在,Service
就需要永久运行。据我所知,对小部件的onClick
事件作出反应的唯一方法是通过广播发送PendingIntents
。目前,我正在MainActivity
收到这些邮件,并将其转发给正在投放的Service
。
所以实际上我正在使用我的MainActivity
作为我的小部件传入事件的某种代理。这是正确的方法吗?我希望直接与我的Service
沟通 - 这可能吗?
答案 0 :(得分:4)
只要appWidget存在,该服务就需要永久运行
这是Android中的反模式。结果也是有效的。如果您希望获得可靠的结果,并且用户不会使用任务杀手攻击您,请重新设计您的应用以免需要永久性服务。
据我所知,对小部件onClick事件做出反应的唯一方法是通过广播发送PendingIntents。
PendingIntent
上有三种工厂方法:getActivity()
,getService()
和getBroadcast()
,PendingIntent
执行startActivity()
,{分别为{1}}和startService()
。
我希望直接与我的服务部门联系 - 这可能吗?
使用sendBroadcast()
getService()
代替PendingIntent
或getActivity()
getBroadcast()
。