Android AppWidgets中处理(挂起)意图的正确方法
我有一个关于AppWidget意图处理的问题。我有一个可点击的小部件,点击后我想向AppWidgetProvider本身发送一个意向,以便进一步处理 问题:我最初在onReceive()中接收到意图,但过了一段时间(不确定是什么原因),onReceive()不再被调用。 我有以下代码,全部在MyWidgetProvider中扩展了AppWidgetProvider a) 登记接收广播:Android AppWidgets中处理(挂起)意图的正确方法,android,android-intent,android-appwidget,android-pendingintent,Android,Android Intent,Android Appwidget,Android Pendingintent,我有一个关于AppWidget意图处理的问题。我有一个可点击的小部件,点击后我想向AppWidgetProvider本身发送一个意向,以便进一步处理 问题:我最初在onReceive()中接收到意图,但过了一段时间(不确定是什么原因),onReceive()不再被调用。 我有以下代码,全部在MyWidgetProvider中扩展了AppWidgetProvider a) 登记接收广播: in onEnabled(...): context.getApplicationContext().re
in onEnabled(...):
context.getApplicationContext().registerReceiver(this, new IntentFilter(MY_ACTION));
b) 设置单击时要激发的意图:
in onUpdate(...)
Intent intent= new Intent(MY_ACTION);
PendingIntent pendingIntent= PendingIntent.getBroadcast(context, 0/*notusedanyway*/, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.widget_root, pendingIntent);
c) 对事件作出反应并采取行动:
in onReceive(...)
if (MY_ACTION.equals(intent.getAction())
doSomething();
当我部署并添加一个小部件时,它工作得很好。然而,过了一段时间——不确定问题的确切原因,但例如,一个电话似乎会影响问题——我在onReceive()中不再收到任何通知
我完全搞不懂为什么会这样。有人能告诉我做这件事的正确方法吗
谢谢
Tom您应该使用在AndroidManifest.xml文件中注册的BroadcastReceiver。当您在onEnable中注册它时,它将绑定到流程。每当Android终止您的进程时(例如,当接到电话时),您的接收器就不再存在,并且(正如您所观察到的)不再工作。谢谢,这就解决了问题。我做了一些日志记录,事实上我的提供者在启动时已经实例化了三次,但OneEnabled只调用了一次。这是一个很大的提示,指向“不要依赖任何实例注册码…”;)