1

我有使用服务进行更新的小部件。它上面有一个按钮来打开活动。它完美地工作。但是,有时我单击小部件以打开活动,但它无法工作或更新。

是什么杀死了应用小部件?如果小部件死了,为什么它仍然显示在屏幕上?有没有办法在不创建另一个小部件的情况下重温该特定小部件?

4

2 回答 2

2

当它面临内存不足的情况时,Android 将停止您的小部件。然后它会在自动清理 RAM 后重新启动您的家庭小部件。但是这一次,你的 home 小部件将获得与上一个不同的 pid,因此它无法响应广播。

使用 AlarmManager 更新应用小部件

于 2012-06-15T18:55:12.897 回答
0

我必须将此代码包含在我的服务类中。基本上,它将更新发送到每个小部件。现在已经一年多了;我的小部件上的按钮始终有效,并且小部件更新没有任何问题。

int[] arrayOfInt = AppWidgetManager.getInstance(getBaseContext())
                     .getAppWidgetIds(new ComponentName(this, mywidget.class));

AppWidgetManager localAppWidgetManager = AppWidgetManager.getInstance(this);

new WebView().onUpdate(getBaseContext(), localAppWidgetManager, arrayOfInt);

int i = arrayOfInt.length;
for (int j = 0;; j++) {
    if (j >= i)
        return;
    int k = arrayOfInt[j];
    RemoteViews localRemoteViews = new RemoteViews(getBaseContext()
                                       .getPackageName(), R.layout.xx);
    localRemoteViews.setTextViewText(R.id.tv, tv_text);

    localRemoteViews.setOnClickPendingIntent(
        R.id.Button01,
        PendingIntent.getActivity(getBaseContext(), 0, new Intent(
            getBaseContext(), LicenseCheck.class), 1));
    localAppWidgetManager.updateAppWidget(k, localRemoteViews);
}
于 2014-02-21T15:57:24.233 回答