选择一式两份的答案错误。
如果小部件应用程序重新启动,它将生成NPE。
----------
这是一个 TorchWidget 应用,包含2个类:
class1 AppWidgetProvider
setOnClickPendingIntent
启动class2
新RemoteViews
设置初始按钮图标。
class2 IntentService
切换火炬
新的另一个RemoteViews
来打开/关闭图标。
RemoteViews views = new RemoteViews(getPackageName(), R.layout.torch);
if (b) {
mSwitch(Service.this, false);
views.setImageViewResource(R.id.Torch,R.drawable.moon_off );
editor.putBoolean("switch", false);
} else {
mSwitch(Service.this, true);
views.setImageViewResource(R.id.Torch,R.drawable.moon_on );
editor.putBoolean("switch", true);
}
Github上的完整代码。
答案 0 :(得分:0)
重新启动后,恢复的视图将是IntentService
中实例化的视图,该视图没有OnClickPendingIntent
。
要解决此问题,我应该通过broadcasts仅在提供商的更新功能中更改图标。
还是一个问题,why the OnClickPendingIntent
will work until launcher restart, after view is replaced。