我已经在解决这个问题三天了,看过这里的每一个问题以寻找答案。我有一个带有按钮的小部件,我只想要它在每次点击时启动服务。但是问题在于这个按钮会随机停止工作。我无法重现它,并且也不知道是什么原因导致的。我的服务调用了stopSelf();但我也曾经遇到广播接收器出现这个问题,所以我认为问题出在小部件上而不是服务上。以下是代码:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
Log.i("Widget", "onUpdate");
final int N = appWidgetIds.length;
for (int i=0; i<N; i++)
{
int appWidgetId = appWidgetIds[i];
Log.i("Widget", "onUpdateLoop");
Intent intent = new Intent(context, ServiceWidgetAction.class);
intent.setAction(Long.toString(System.currentTimeMillis()));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent
.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget);
views.setOnClickPendingIntent(R.id.widgetButton, pendingIntent);
views.setTextViewText(
R.id.widgetTextView,
"Some text");
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
我已经一遍又一遍地检查了这段代码,但我不知道为什么会出现这种情况。在三部不同的手机上都发生了这种情况,但我却无法复现。我尝试过强行停止应用程序、从任务管理器中清除它,添加新的小部件等方式来使小部件停止工作,但是都没有用。然而,今天早上当我起床后,小部件就再也没有工作了。非常感谢任何帮助。