2012-03-10 54 views
1

我有識別Android上的TimerTask一個問題,讓我發瘋了(我相​​信)的麻煩,的Android TimerTask的不總是叫(電話沒有被調試時,大多不叫)

的情形是:在撥打電話後,我使用PhoneStateListener啓動計時器,並在某個通話時間後再現聲音。

一切都很完美,但只要我不在調試模式(或者只是將手機插入電腦),聲音並不總是響,這些時候大多數時候聽起來並不順利。

我最大的問題是我無法清楚地識別問題,因爲這隻發生在拔下手機並且我無法讀取日誌時發生。我只能重現這個問題一次(在調用之後沒有聲音)並閱讀關於它的日誌,我意識到:onCallStateChanged被調用,Timer正常,但TimerTask從未被調用(或調度)。

因此,在閱讀了一些問題之後,我使用了Handler而不是Timer。但我有完全相同的問題。事實上,使用Handler這個問題通過簡單地插入和拔出手機就可以更容易地重現(使用Timer可以更難以重現無聲問題)。

我做錯了什麼,或者我需要執行其他的事情嗎?

任何意見可以理解, 在此先感謝

編輯

顯然,這種情況是因爲手機進入,一旦呼叫開始睡覺的處理程序。然而,使用wake_lock並不能防止這種情況發生,當手機處於睡眠狀態時,是否還有其他更改來運行線程?

回答

0

好吧,正如我所說的,這個問題是電話在通話過程中睡覺時停止了計時器。我結束了使用AlarmManager。

需要注意的是,AlarmReceiver必須是公共類,否則將永遠不會調用receive方法。

但是,我仍然不明白爲什麼Timer有時候有時候並且有時不工作。

Regards