我有使用服务进行更新的小部件。它上面有一个按钮来打开活动。它完美地工作。但是,有时我单击小部件以打开活动,但它无法工作或更新。
是什么杀死了应用小部件?如果小部件死了,为什么它仍然显示在屏幕上?有没有办法在不创建另一个小部件的情况下重温该特定小部件?
我有使用服务进行更新的小部件。它上面有一个按钮来打开活动。它完美地工作。但是,有时我单击小部件以打开活动,但它无法工作或更新。
是什么杀死了应用小部件?如果小部件死了,为什么它仍然显示在屏幕上?有没有办法在不创建另一个小部件的情况下重温该特定小部件?
当它面临内存不足的情况时,Android 将停止您的小部件。然后它会在自动清理 RAM 后重新启动您的家庭小部件。但是这一次,你的 home 小部件将获得与上一个不同的 pid,因此它无法响应广播。
我必须将此代码包含在我的服务类中。基本上,它将更新发送到每个小部件。现在已经一年多了;我的小部件上的按钮始终有效,并且小部件更新没有任何问题。
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);
}