私はどちらかのためにその動作中に特定のポイントで待機したいAndroidアプリケーション内のスレッドがあります。アンドロイド - *リアルタイムで*通知またはタイムアウトのためのスレッドを待機させる
- からの通知を別のスレッド、または
- リアルタイムで指定したいタイムアウトが発生する可能性があります。
... doStuff(); synchronized(this) { if (!notificationReceived) wait(TIMEOUTPERIOD); } doMoreStuff(); ...
、別のスレッドから呼び出されるメソッドで::これはほとんどの作品
synchronized(this) { notificationReceived = true; notifyAll(); }
は現在、私は次の(おおよそ)があります。実際には、デバッグとテストのすべてを通して機能し、現場でアプリケーションをデプロイしようとしたときには動作しなくなりました。電話CPUがスリープ状態になると、Object.wait()内のタイマーが停止することが判明したためです。 Thread.sleep()の場合と同様です。おっとっと。
電話が眠っている間に電話が戻ってこないことは気になりません(実際には私はこれが望ましいと考えています。電話が眠っているときはいつでもその結果は必要ありません)。私のタイムアウト期間中、電話がスリープ状態になると、起きるとすぐにトリガーするようにしたいと思います。
私はこれを行うには何か方法がありますか?私は私が知っている AlarmManagerを使用して、必要な時間の後に私にブロードキャストインテントを送信し、継続コードを(何を...?BroadcastReceiver?私はこれをやったことはありません...)私のアプリケーションのロジックが複雑になります。だから私のスレッドに(キャンセル可能な)リアルタイム遅延を入れることができるより簡単な方法はありますか?