我正在爲Android創建自己的運行應用程序,並且我有一個應該每5分鐘使用TextToSpeech宣佈時間的計時器。我正在使用Chronometer.OnChronometerTickListener
來跟蹤時間並觸發音頻輸出。當手機插入計算機時它工作正常,但當我拔下手機並鎖定屏幕時,計時器聽衆似乎在約30秒後進入休眠狀態(因此音頻不起作用)。有什麼辦法可以防止這種情況發生?允許應用程序計時器在屏幕鎖定時運行
0
A
回答
3
大多數情況下,當屏幕關閉時需要完成某些操作時,它會在service
中完成。
假設你不知道服務是什麼,從文檔:
A服務是既代表一個 應用程序的慾望的應用組件執行長時間運行的操作,而不是與用戶交互或爲其他要使用的 應用程序提供功能。每個服務類必須在其包的AndroidManifest.xml中有相應的 聲明。服務 可以使用Context.startService()和Context.bindService()來啓動。
所以基本上,它只是在後臺運行,包括屏幕關閉時。您可能會面臨服務被系統終止問題,因爲Android的文檔說明:
注意,這意味着大部分的服務正在運行的時候,它可以 被系統殺死如果是在沉重的記憶力下。如果發生此 ,系統將稍後嘗試重新啓動該服務。這方面的一個 重要的後果是,如果實現 onStartCommand()來安排工作得以異步或 另一個線程中完成的,那麼你可能需要使用START_FLAG_REDELIVERY有 爲你的系統重新提供的意圖,使其如果您的服務在處理時被殺害,則不會丟失 。
在這種情況下,你將需要添加某些代碼,以保持業務的前景,並確保它不被打死:
startForeground();//keeps service from getting destroyed.
唯一的問題,這可能提供的是服務處於活動狀態時的持續通知。
你也可以使用startSticky()
:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
現在,說你是用計時器完成。您可以使用:
stopSelf();
停止服務,或:
Context.stopService();
此通知並不是太大的問題,但因爲屏幕是最有可能關閉,而正在運行的服務。您還可以自定義您的通知,並且最好讓用戶知道後臺正在進行的操作。
如果您需要更多的幫助,隨意問。
〜Ruchir
相關問題
- 1. 如何在屏幕鎖定時允許我們的應用程序運行
- 2. 當iPhone被鎖定時允許應用程序繼續運行
- 3. 鎖定屏幕下的WP8計時器應用程序
- 4. 當屏幕鎖定時自動運行應用程序
- 5. 屏幕鎖定時保持WP7應用程序運行
- 6. 如何在應用程序仍在運行時阻止用戶鎖定屏幕?
- 7. 屏幕鎖定後重置計時器
- 8. 當屏幕空白並鎖定時,讓應用程序繼續運行
- 9. 如何在應用程序啓動時顯示鎖定屏幕?
- 10. 在iOS中鎖定屏幕時訪問應用程序
- 11. 當屏幕鎖定在片段中時應用程序崩潰
- 12. 在應用程序運行時以編程方式解鎖屏幕
- 13. 與屏幕鎖定運行IOS應用程序
- 14. 鎖定屏幕後運行的Android應用程序
- 15. 屏幕鎖定應用程序調用
- 16. 鎖定最近的應用程序屏幕上的應用程序時,某些功能正在運行
- 17. 當屏幕鎖定時,Android應用程序不起作用
- 18. Android應用程序鎖定屏幕
- 19. 鎖定應用程序到屏幕
- 20. 屏幕在我們的應用程序運行時保持解鎖狀態
- 21. 保持iOS應用程序鎖定時應用程序運行?
- 22. 計時器應用程序工作時,屏幕關閉ios
- 23. DeviceEventEmitter停止發射事件,應用程序時,屏幕鎖定
- 24. 當應用程序加載時激活iPhone鎖定屏幕
- 25. 屏幕鎖定時如何關閉我的iPhone應用程序?
- 26. 屏幕鎖定時重新啓動應用程序
- 27. 在應用程序運行時在iOS中blacken屏幕
- 28. 當Android即將鎖定屏幕/執行睡眠時執行應用程序
- 29. 應用程序崩潰時,在Android的小屏幕和大屏幕上運行
- 30. 移動Web應用程序在屏幕關閉時運行?