當我啓動一個服務(IntentService)時,它會調用服務函數的onHandleIntent()。當它正在運行時,如果我再次調用startService(),它將緩存調用,並再次調用onHandleIntent()。實際上,我想要做的是,將一些新數據傳遞給當前正在運行的服務實例,而不創建額外的。 (就像在線程或監聽器中發送信號一樣)。 我該怎麼做? 在我的onHandleIntent()我想使用while(true){....}
,所以它會永遠運行。如何防止onHandleIntent()的多重調用 - IntentService
1
A
回答
1
延長正常服務等級。在您收到的第一個onStartCommand()函數中,啓動具有「while(true){...}」代碼的後臺線程。在之後的onStartCommand()調用中,檢查工作線程是否存在,以及它何時存在,發出信號。
不知道你要使用這項服務,因爲它很難給你任何更好的建議。然而,有些事情需要考慮: - 查看IntentService也使用的Looper/Handler類。它們可以給你一些很好的方式來編寫你的「while(true)」循環,包括信號。 - 請記住,onStartCommand()方法應該在幾秒內返回(它在主線程上運行),所以如果你想交出新的工作(通過onStartCommand傳入的Intent來接收),你應該確保這隻手-off不需要太長時間。 Looper/Handler類也可以幫助你。
1
檢查您的服務是否已啓動,如果沒有啓動它:
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("com.example.Service".equals(service.service.getClassName())) {
return true;
}
}
return false;
}
相關問題
- 1. 如何重複調用intentservice onHandleIntent方法而不創建新的intentservice
- 2. IntentService的onCreate()調用,但onHandleIntent()不
- 3. Android IntentService onDestroy被調用而不是onHandleIntent
- 4. android.os.NetworkOnMainThreadException IntentService的onHandleIntent方法
- 5. OnHandleIntent中的代碼是否阻止IntentService接收其他意圖?
- 6. 如何從另一個類調用OnhandleIntent?
- 7. IntentService防止活動破壞
- 8. 如何onHandleIntent打開對話框()的IntentService類的方法
- 9. 在onHandleIntent之前捕獲IntentService意圖
- 10. 如何將字符串從OnStartCommand傳遞到IntentService中的OnHandleIntent中?
- 11. 如何停止IntentService
- 12. 如何停止IntentService?
- 13. 如何在onHandleIntent()完成時不結束Android IntentService?
- 14. 防止多個API調用
- 15. 如何防止多次吐司重疊
- 16. 如何在Android中防止多重Dex
- 17. 如何防止mod_rewrite多次重寫URL?
- 18. 如何防止多次觸發回調?
- 19. 使用IntentService進行位置偵聽,但在onHandleIntent後立即調用onDestroy
- 20. handler.postDelayed在IntentService的onHandleIntent方法中不起作用
- 21. 我的onHandleIntent()沒有被調用?
- 22. Android IntentService - 防止同一請求的多個實例
- 23. 如何防止getJSON未調用回調?
- 24. 防止調用
- 25. jQuery的防止多個AJAX調用
- 26. 如何防止父的onclick被調用
- 27. 如何防止willTerminate方法的調用?
- 28. 如何防止調用片段的onCreateView()?
- 29. 方法onHandleIntent()不會被調用
- 30. 防止多重評分