我有一個應用程序小部件,其佈局中有一個按鈕。 單擊按鈕時,會觸發一個呼叫我的廣播接收器的意圖。Android - AppWidget的待處理意圖不會觸發
它工作得很好,但偶爾,使用在任務管理器中的「清除內存」按鈕後,小部件卡住 - 點擊它什麼都不做。但它仍然可以從我的應用程序接收更新,如果它正在運行。
我不確定懸而未決的意圖未被解僱的事實是內存清理錯誤還是我的錯。 總之,這裏的代碼:
註冊未決意圖(應用程序窗口小部件的方法的onUpdate)
Intent intent = new Intent(context, ServiceControl.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget);
views.setOnClickPendingIntent(R.id.appwidgetbutton, pendingIntent);
,然後更新與所述視圖的窗口小部件。
這裏是應用程序控件提供者的decleration:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="72dp"
android:minHeight="72dp"
android:initialLayout="@layout/appwidget"
android:updatePeriodMillis="0">
</appwidget-provider>
我不希望系統調用插件的更新,我只能從我的應用程序本身的更新。
那麼爲什麼待定意圖停止射擊?
在此先感謝。
我不知道「清除內存」是什麼,因爲Android沒有內置在操作系統中的「任務管理器」。你在測試什麼版本的Android? – CommonsWare
它的2.3.3,我很確定這個「任務管理器」是三星手機的特別之處。我已經在我的三星Galaxy S2和我父親的S1上進行了測試並得到了這個問題,所以也許就是這個「清除內存」錯誤。根據我給出的代碼,這不應該是因爲我做了錯誤,對吧? – Jong
你的代碼看起來很好。如果用戶通過任務殺手或「設置」中的「管理服務」屏幕殺死您的應用,則我可以看到您的行爲發生的一種情況是Android 3.1+。然後,您的應用會進入「停止」狀態,並且無法接收廣播,直到用戶再次手動啓動其中一項活動爲止。 「清除內存」可能是任務殺手的一些變化,但我敢肯定,除了Android 3.1之外,無廣播規則纔會生效。 – CommonsWare