为什么App小部件在重启laucher后停止工作?

时间:2018-03-11 02:48:49

标签: android android-widget

选择一式两份的答案错误

如果小部件应用程序重新启动,它将生成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上的完整代码。

1 个答案:

答案 0 :(得分:0)

重新启动后,恢复的视图将是IntentService中实例化的视图,该视图没有OnClickPendingIntent

要解决此问题,我应该通过broadcasts仅在提供商的更新功能中更改图标

还是一个问题,why the OnClickPendingIntent will work until launcher restart, after view is replaced