1

頻繁に更新する必要のあるAndroidAppWidgetを作成しています(そうです、そうすべきではありません...)。表示されている場合にのみ更新してほしいのですが、迷惑なことに。に似たものはないようWallpaperService.Engine.onVisibilityChanged(boolean visible)です。

ここで推奨されるアプローチは、ミリ秒AlarmManager.setRepeating(AlarmManager.RTC, firstShot, interval, pendingIntent)ごとに更新をトリガーするアラームを設定することです。intervalこれは、少なくともデバイスがスリープ状態のときにデバイスをスリープ解除しません。

それは私がしたことです。私PendingIntentはこのように見えます:

final Intent intent = new Intent(context, CountdownWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);

final PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

CountdownWidgetServiceメッセージがアラームによってトリガーされるたびに、ログにメッセージが記録されます。デバイスがスリープ状態になっているはずの場合でもログメッセージが表示されますが、それは私が想定していないことです。私の間違いはどこにありますか?

4

1 に答える 1

1

たぶん、あなたが持っている他のアプリがデバイスを起こしていて、あなたのアラームがそれで実行されます。これを使用する場合は、次のことAlarmManager.RTCを意味します。'デバイスが起動している場合は実行するか、起動するまで待ってから実行します。logcatをチェックして何が起こっているかを確認し、このコマンドを使用して他に登録されているアラームを確認します。

adb shell dumpsys alarm
于 2012-05-25T01:44:15.220 に答える