2012-11-16 165 views
1

我有一個類擴展了BroadcastReciever,另一個擴展了AsyncTask如何檢查手機是否處於閒置狀態或手機是否處於閒置狀態?

我希望它能夠在接收到短信時使用'AsyncTask-extended'類啓動定時器。
之後,讓我們說,30秒,鑑於手機空閒或沒有收到任何用戶輸入的整個30秒,它會運行一個函數。
否則,它會停止計時器。

我已經得到了定時器的一部分(儘管,隨機它會過早停止)
現在我堅持搞清楚如何檢查定時器運行時是否有任何用戶輸入。

有人可以告訴我如何檢查所述用戶輸入嗎?

回答

1

因此基本上需要監聽ACTION_SCREEN_ON廣播意圖。

的步驟來實現:

1)設置廣播接收器的短信。我們稱之爲SMSBroadcastReceiver。

2)在您的SMSBroadcastReceiver.onReceive方法,你必須做兩件事情:

2.1)使用AlarmManager來安排你的函數的將來執行。不需要使用AsyncTasks。

2.2)註冊一個新的偵聽ACTION_SCREEN_ON事件的BroadcastReceiver。該接收機的實現應該取消步驟2.1中計劃的操作。

此外,僅考慮對ACTION_SCREEN_OFF

+0

好的,我會嘗試 –

+0

每當我解鎖我的手機時,它都會收到[USER_PRESENT](http://developer.android.com/reference/android/content/Intent.html#ACTION_USER_PRESENT)而不是ACTION_SCREEN_ON。(這可能是因爲我啓用了鎖定屏幕?) 所以我使用兩個,只是在案件。除此之外,一切都很好 謝謝! –

+0

顯然,要接收ACTION_SCREEN_ON和ACTION_SCREEN_OFF,您需要以編程方式設置接收器。我猜這樣做是爲了讓系統不需要永遠喚醒/睡覺,如果有太多的應用程序連接到這個事件。很高興工作! –

0

當手機閒置時,您當前活動的onStop()方法將被調用。重寫此方法,並在調用它時執行你想要的操作。當手機從空閒狀態恢復時,方法OnResume()和onRestart()將被調用,您也可以重寫它們。有關活動生命週期的詳細信息,請點擊此處:http://developer.android.com/reference/android/app/Activity.html

+0

這已經很好,如果我工作是擴展Activity類一類註冊SMSBroadcastReceiver。 [onUserInteraction()](http://developer.android.com/reference/android/app/Activity.html#onUserInteraction%28%29)方法將是一個簡單的解決方案 –

相關問題