2012-03-10 7 views
1

私は(私は信じて)私が狂いそうされているAndroidのTimerTaskを上の問題を特定する問題を抱えていますが、AndroidのTimerTaskを(携帯電話がデバッグされていないときに主に呼び出されません)は、常に呼び出されていない

シナリオは次のとおりです。私はPhoneStateListenerを使って呼び出しを行った後、特定の呼び出し時間の後にサウンドを再現した後にタイマーを開始します。

すべては完璧ですが、私がデバッグモード(または単にコンピュータに接続された電話機)でないとすぐに、サウンドは必ずしも発音しないので、ほとんどの場合、途中で発音しません。

私の最大の問題は、電話機のプラグが抜かれてログを読み取れない場合にのみ発生するため、問題を明確に識別できないことです。私は一度だけの問題(コールの後に無音)を再生し、私は気づいそれについてのログ、読むことができる:onCallStateChangedが呼び出されていたが、タイマーはOKだが、TimerTaskをを呼ばない(または予定)でした。

ここでいくつかの質問を読んだ後、私はタイマの代わりにハンドラを使用しました。しかし、私はまったく同じ問題があります。実際には、ハンドラでこの問題は、単に携帯電話を差し込むと抜くことで再現する方がはるかに簡単です(タイマーを使うには、無音問題を再現することはより困難でした)。

は私が間違ったことをやっているか、私は何か他のものを実装する必要がありますか?

したコメントは、電話機が、すぐに通話が開始されるとスリープ状態になるので、この問題が発生したハンドラで、どうやら、事前に おかげ

編集

を理解されるであろう。しかし、これを防ぐためにwake_lockを使用することはできません。電話がスリープ状態のときにスレッドを実行するための他の手段がありますか?

答えて

0

まあ、私が言ったように、問題は電話中にスリープ状態になるとタイマーが止まったということでした。私はAlarmManagerを使用して終了しました。

AlarmReceiverはパブリッククラスである必要があります。そうでないと、受信メソッドは決して呼び出されません。タイマーは時々、時にはない働いた理由

しかし、私はまだ理解できません。

よろしくお願いいたします。

関連する問題