簡體   English   中英

是否可以在appWidget中重用RemoteViews而不是每次都創建新的? 以及如何存儲它們?

[英]Is it possible to reuse RemoteViews in an appWidget instead of creating new ones every time? and how can I store them?

在我的appWidgetProvider中,每次需要更新appWidget時,都必須創建一個新的RemoteViews對象並為其分配屬性:

RemoteViews views = new RemoteViews(context.getPackageName(),layout);
views.setOnClickPendingIntent(R.id.widgetLayout, pendingIntent);
view.setFloat(R.id.nick, "setTextSize", wParameters.getFontSize()); 
view.setTextViewText(R.id.nick,wParameters.getNick()); 
.........etc

appWidgetManager.updateAppWidget(appWidgetId, views);

但實際上,我只需要更改一件事,即TextView Text。

我可以以某種方式存儲RemoteView以便在下一個更新中重用它,並僅應用

 view.setTextViewText(R.id.nick,wParameters.getNick()); 
 appWidgetManager.updateAppWidget(appWidgetId, views);

再次?

還是以某種方式獲取先前使用的RemoteViews對象?

我想要實現這一點,因為在我的appWidget中再次設置新的RemoteViews對象屬性的過程非常昂貴。

假設我的小部件由TextView和ImageView組成。 在窗口小部件的configureActivity中選擇ImageView的圖像(對於appWidget的每個實例都是唯一的),但是圖像處理非常昂貴。 TextView文本需要在每次更新中進行更改。 我想保持ImageView圖像不變,只更改TextView的文本。 是否可以在不更新imageView的情況下更新TextView?

如有任何幫助和想法,我們將非常高興! 謝謝你,加爾

但實際上,我只需要更改一件事,即TextView Text。

然后僅更改“ TextView文本”。

AFAIK,只要保持相同的布局ID,就不需要更新布局中的每個小部件。 但是,您有責任始終知道應用程序小部件是否先前已渲染過,這可能會很棘手。 因此,通常每次更新每個小部件都更為簡單。

我可以以某種方式存儲RemoteView以便在下次更新時重用它

沒有。

還是以某種方式獲取先前使用的RemoteViews對象?

沒有。

我想要實現這一點,因為在我的appWidget中再次設置新的RemoteViews對象屬性的過程非常昂貴。

然后在由AppWidgetProvider啟動的IntentService進行工作,就好像它是如此昂貴一樣,您不想在主應用程序線程上進行這項工作。

暫無
暫無

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

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