在我的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.
我可以以某种方式存储RemoteViews以便在下次更新时重复使用,并且只是应用
view.setTextViewText(R.id.nick,wParameters.getNick());
appWidgetManager.updateAppWidget(appWidgetId, views);
再次?
或以某种方式获取以前使用的RemoteViews对象?
我想实现这一点,因为在我的appWidget中再次设置新的RemoteViews对象属性的过程非常昂贵.
我们假设我的小部件由TextView和ImageView组成.
ImageView的图像是在widget的configureActivity中选择的(appWidget的每个实例都是唯一的),但是图像处理很昂贵.
每次更新都需要更改TextView文本.
我想保留ImageView图像,只改变TextView的文本.是否可以在不更新imageView的情况下更新TextView?
对任何帮助和想法都会感到高兴!
谢谢先进,Gal.
最佳答案
But in fact, I only need to change one thing which is the TextView Text.
然后只更改“TextView文本”.
AFAIK,只要您保持相同的布局ID,如果您不想更新布局中的每个小部件,则无需更新.但是,您有责任始终知道应用程序窗口小部件是否先前已呈现过,这可能会变得棘手.因此,每次更新每个小部件通常更简单.
Can I somehow store the RemoteViews for reusing it on the next update
没有.
Or get the previously used RemoteViews object somehow?
没有.
I want to achieve this because the process of setting the new RemoteViews object properties again is very expensive in my appWidget.
然后在你的AppWidgetProvider启动IntentService中的工作,好像它是那么昂贵,你不想在主应用程序线程上做这项工作.