我從後臺運行一些服務調用運行IntentService,但它不等待服務調用返回。經過我的研究,似乎只有兩個選項,1.使用服務而不是IntentService 2.使同步http調用而不是異步。 有什麼辦法,我可以從IntentService異步http調用,並聽取http回調?從IntentService發出異步http調用
-1
A
回答
3
IntentService是在服務中的後臺線程內託管回調(onHandleIntent)的一種奇特方式。
一旦onHandleIntent返回(不等待異步調用返回結果),intentservice就會關閉。
爲了使其工作,您應該添加另一層同步(例如互斥鎖),但它會浪費intentservice的簡單性。
我想要做的是使http調用同步,或將調用移動到服務(如果您確實需要在服務內部而不是從您的活動或片段等前端組件調用該調用)。
1
從IntentService對您的http後端進行同步調用。 IntentService本身已經在後臺線程上運行,所以只需等待後端調用完成即可。
0
我不知道這是否是你想要的,但如果你想執行一些IntentService工作,而做HTTP操作,那麼你可以使用執行人-S爲:
ExecutorService executor = Executors.newSingleThreadExecutor();
then inside IntentService handler:
Future<?> fut = executor.submit(new Runnable() {
// here do your network operations
});
// here do some other stuff inside IntentService handler
// wait for your http operation
fut.get();
相關問題
- 1. 來自IntentService的異步調用
- 2. 異步發出多個HTTP請求
- 3. 如何調試$ http異步調用?
- 4. 異步HTTP發佈android
- 5. 調試IntentService同步ParseObjects
- 6. 從IntentService調度遞歸處理程序以重試http調用
- 7. 使用Commonj工作管理器發送異步HTTP調用
- 8. 一系列http異步請求調用
- 9. 引導期間的異步HTTP調用
- 10. 延遲HTTP客戶端異步調用
- 11. Python中的異步HTTP調用
- 12. 處理異步http調用節點js
- 13. 模擬RxJava異步http調用
- 14. 如何從非異步方法異步調用異步方法
- 15. 從AJAX調用異步Servlet
- 16. 異步從Java調用Python
- 17. 進行異步調用HTTP出站網關
- 18. 從ASP.NET調用異步方法調用
- 19. 從子向異步調用拋出異常
- 20. 如何從異步方法向調用者拋出異常?
- 21. 從調用異步的BackgroundWorker拋出異常。方法(Webrequest)
- 22. 異步調用
- 23. 異步調用
- 24. 異步調用
- 25. 併發異步回調
- 26. 異步eachSeries - 回調從未調用
- 27. 等待javascript異步回調@ http post
- 28. 在顯示進度條時使異步http調用同步?
- 29. 如何在Android中同步/限制某些異步http調用
- 30. WCF異步調用引發目標調用異常在Main()
使用'Service'爲背景中的'Httpcall' –