2017-08-23 7 views
0

私のアプリケーションの機能の1つは、ユーザーが誤って有効にしたままにならないように、5分後にタイムアウトするように設計されています。Androidデバイスがロックされていると、RxJavaの間隔とタイムアウトが時折停止する

アクティビティには、Observable.interval()で更新されたカウントダウンタイマーが表示され、機能のタイムアウトはObservable.timeout()によって実装されます。

時々カウントダウンが実行され、ユーザーがデバイスをロックすると、​​は発光を停止し、timeout()はタイムアウト例外をスローしません。デバイスがロック解除され、アクティビティが再びフォアグラウンドで行われると、最終的にはtimeoutが発生し、不確定な時間が経過した後で例外が発生します。

this SO postにはintervalが「アクティブコード」のみであることが示唆されています。この問題が発生していると私は想定しています。

私はこのタイムアウトとカウントダウンのためにRxJavaを使い続けることができる簡単な解決法がありますか?AlarmManagerのような他の解決策を見なければなりませんか?レスキューに特別なScheduler

+0

最後の質問については、[ジョブスケジューラ](https://developer.android.com/topic/performance/scheduling.html)を確認してください。残りのコードを表示する必要があります。 – masp

答えて

-1

あなたは

.subscribeOn(Schedulers.newThread()) 

を使用することができますしかし、あなたは、あなたが正しく解除することを確認し、複数の観測を複製しないようにする必要があります。

+0

意味がありません。つまり、タイムアウトの新しいスレッドを作成します。唯一の解決策は、ウォークロックを使用することです。 –

関連する問題