繁体   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