每當我重新創建手機上的主屏幕小部件時,都不會調用onReceive()方法。onReceive of Android主屏幕小工具在重新創建小工具時不起作用
的問題是,這並沒有按下按鈕,我分配一些其功能駐留在的onReceive方法應對..
該問題不會駐留在模擬器,但是當我用我的手機進行了測試,它沒有迴應。
什麼是最好的解決方案呢?
每當我重新創建手機上的主屏幕小部件時,都不會調用onReceive()方法。onReceive of Android主屏幕小工具在重新創建小工具時不起作用
的問題是,這並沒有按下按鈕,我分配一些其功能駐留在的onReceive方法應對..
該問題不會駐留在模擬器,但是當我用我的手機進行了測試,它沒有迴應。
什麼是最好的解決方案呢?
由於您沒有更多的細節內容(可能是關於如何註冊接收器以及如何綁定待定意圖的某些源代碼)。可能您的手機是帶滑動鍵盤的型號,或者這些主屏幕可能會改變方向。因爲當主屏幕的屏幕方向改變(或任何硬件配置)時,主屏幕會膨脹並重新創建。所以,對於你的按鈕,最初綁定到它的意圖在娛樂之後消失了。根據文檔(對不起,找不到鏈接),inflater將只獲得最新的遠程更新。所以,下面的不工作:
RemoteViews rv = ...;
// Assign the button to some pending intent
rv.setOnClickPendingIntent(View, pi);
AppWidgetManager.Update(...);
// And after sometime, you make changes to the rv
rv.setFloat();
// And update again
AppWidgetManager.Update(...);
它仍然是確定和按鈕將會觸發等待預期的意圖,但是,如果由於任何原因配置發生變化,主屏幕是無效的(和重建) ,appwidgetmanager只會根據更新更新進行更新,該更新沒有指定關於點擊意圖的任何內容。
解決方法是,每次更新遠程視圖時,都必須設置所有待處理的意圖。我不確定它會如何影響性能,但它是我能做的唯一的工作方法。 (但我的部件更新像16次/秒,至少它的工作:)