簡體   English   中英

重新創建小部件的onReceive of Android Home Screen Widget不起作用

[英]onReceive of Android Home Screen Widget not working when recreating the widget

每當我在手機上重新創建主屏幕小部件時,均不會調用onReceive()方法。

問題是它沒有響應我分配其功能駐留在onReceive方法中的Button按下。

該問題並不存在於模擬器上,但是當我用手機對其進行測試時,它沒有響應。

最好的解決方案是什么?

由於您沒有更多詳細信息(可能是有關如何注冊接收者以及如何綁定待處理意圖的一些源代碼)。 您的手機可能是帶有滑動鍵盤的型號,或者那些主屏幕可以更改方向。 因為當主屏幕的屏幕方向更改(或任何硬件配置)時,主屏幕會膨脹並重新創建。 因此,對於您的按鈕,最初綁定到它的意圖在重新創建后就消失了。 根據文檔(抱歉,找不到鏈接),充氣機只能從remoteviews獲得最新的更新。 因此,以下操作無效

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次的速度進行更新,至少可以正常工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM