我有一个关于AppWidget意图处理的问题。我有一个可点击的小部件,点击后我想将一个意图发送到AppWidgetProvider本身进行进一步处理。
问题:我最初在onReceive()中收到意图,但过了一会儿(不确定是什么原因),不再调用onReceive()。
我有以下代码,所有在MyWidgetProvider中都扩展了AppWidgetProvider。
a)注册接收广播:
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()中收到任何通知。
我完全不知道为什么会这样。有人能指出我这样做的正确方法吗?
谢谢!
汤姆
答案 0 :(得分:1)
您应该使用在AndroidManifest.xml文件中注册的BroadcastReceiver。当您在onEnable中注册它时,它与进程相关联。每当Android杀死您的进程时(例如,当收到电话时),您的接收器就不再存在,并且(如您所见)不再有效。