0
我有一個關於AppWidget意圖處理的問題。我有一個可點擊的小部件,點擊後,我想向AppWidgetProvider本身發送一個意圖以進行進一步處理。在AppWidgets中處理(等待)意圖的正確方式
問題:我最初在onReceive()中接收意圖,但過了一會兒(不知道是什麼原因導致它),onReceive()不再被調用。
我有下面的代碼,所有在MyWidgetProvider中擴展AppWidgetProvider。
一)註冊接收廣播:
in onEnabled(...):
context.getApplicationContext().registerReceiver(this, new IntentFilter(MY_ACTION));
二)設置的意圖上點擊被解僱:
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()中得到任何通知。
我完全難住爲何如此。有人能告訴我這樣做的正確方法嗎?
謝謝!
湯姆
謝謝,解決了它。我做了一些日誌記錄,並且我的提供程序實際上已經在啓動時實例化了三次,但onEnabled只被調用一次。這是「不依賴任何實例註冊代碼......」方向的一個重要提示;) – Tom