私はこの問題に 3 日間取り組んできましたが、答えを得るためにここにあるすべての質問を調べました。ボタンが付いたウィジェットがあり、クリックするたびにサービスを開始したいだけです。問題は、ボタンがランダムに機能しなくなることです。まったく再現できず、何が原因なのかわかりません。私のサービスは 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);
}
}
このコードを何度もチェックしましたが、なぜこれを行っているのかわかりません。これは 3 台の別々の電話で行われ、再現できません。アプリを強制停止し、新しいウィジェットを追加するタスクマネージャーからアプリをクリアして、ウィジェットの動作を停止しようとしましたが、機能しません。しかし、今朝目が覚めたとき、ウィジェットは機能しなくなりました。どんな助けでも大歓迎です。