0

カウントダウンするタイマーを作成しました.3に達すると、0で完全に振動するまで、ますます強く振動し始めます.

私の問題は、ユーザーが画面をオフにすると、タイマーが不安定になることです。つまり、予期せずにカウントダウンするか、まったくカウントダウンしません。しばらく探し回った後、解決策はおそらく AlarmManager を使用することであることがわかりましたが、これはこのような単純なタスクには非常に複雑に思えます。

タイマーはアクティビティに関連付ける必要があり、設定されている場合は、残り時間を示す通知も発生する必要があります。

何か案は?

4

2 に答える 2

1

求めていることを実行するために検討できるオプションがいくつかあります。それぞれのオプションは、特定の状況と本当に達成したいことによって異なります。Service、IntentService (Service サブクラス)、AlarmManager、または (部分的な) WakeLock (および、私が見逃しているいくつかのより創造的なソリューション)。

一番簡単なのは Partial WakeLock を使うことだと思います。とてもシンプルで、画面がオフのときでもアクティビティでプロセスを実行したい場合に便利です。ただし、バッテリー寿命を食い尽くすため、控えめに使用する必要があります(これが、画面がオフのときにアクティビティが一時停止する理由です).

WakeLock を使用するには:

マニフェストにアクセス許可を追加します。

<uses-permission android:name="android.permission.WAKE_LOCK" />

アクティビティで、必要なときに WakeLock を開始します

PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WakeLockTag");
wakeLock.acquire();

ウェイクロックが完了したら (つまり、プロセスを実行する必要がなくなったら)、解放します。

wakeLock.release();
于 2013-09-23T17:38:24.990 に答える