Android小部件pendingintent从后台恢复后丢失

时间:2016-07-31 11:56:15

标签: android widget android-pendingintent

我正在为可以发送和接收数据短信的小部件(图像按钮)编写代码,接收有效数据短信将改变它的图标并再次点击将重置它,我可以拥有相同小部件的多个实例在屏幕上配置。

问题是:当主屏幕从后台恢复时,小部件停止响应用户点击,但它仍然检测传入的数据短信并更新图标。

我认为问题可能是pendingIntent(我不确定在getBroadcast中使用的最佳标志)它是在我的updateAppWidget方法中创建的:

Intent active = new Intent(context, AppWidget.class);
    active.setAction(ACTION + String.valueOf(appWidgetId)); //action should look like this: "CLICKED_123"
    PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, rc, active, 0); //rc is the first id of each single instance of the widget
    views.setOnClickPendingIntent(R.id.imageButton, actionPendingIntent);

我还发现,当小部件进入后台时,它会被销毁并再次使用不同的id创建,这是真的吗? 如果是,问题可能与我的savedPreferences有关:

static void saveStatePref(Context context, int appWidgetId, int text) {
    SharedPreferences.Editor prefs = context.getSharedPreferences(STAT_NAME, 0).edit();
    // here i use the widget id to save my preferences
    // so that i can tell how to update every single instance
    prefs.putInt(PREF_PREFIX_KEY + appWidgetId, text);
    prefs.apply();
}

是否有更好的方法可以保存首选项并提供请求代码而无需转发其ID? 我找不到类似的东西,我决定发布这个问题。 对不起我的英文,请随时编辑。

0 个答案:

没有答案