簡體   English   中英

Android:如何在IntentService中獲取調用活動的上下文?

[英]Android: How to get context of calling activity in an IntentService?

如果我打電話

Intent intent = new Intent(ReadingActivity.this, AdService.class);
startService(intent);       

從內部onCreate的方法MyActivity類,我如何才能訪問MyActivity.this從里面onHandleIntent()的方法IntentService

@Override
protected void onHandleIntent(Intent arg0) {
    // TODO Auto-generated method stub
    ((BookLib) getApplication()).createAd(I need to pass the calling activities context here);
}

如何從IntentService類的onHandleIntent方法內部訪問MyActivity.this

你沒有。

createAd()移動到活動中。 如果時間有問題,請使用AsyncTask而不是IntentService

IntentService主要用於您希望工作與任何活動分離的情況(例如,即使用戶離開您的UI繼續執行其他操作,文件下載仍應繼續)。

在我看來,你似乎正試圖與你的ActivityService進行雙向溝通。 而不是將Intent發送到您的服務,而是考慮綁定到它。

編輯:回應CommonsWare的評論:

綁定到IntentService的問題在哪里? 我發布了包含綁定的IntentService工作正常的應用程序。 您沒有提供任何證據來支持您的申請。

這里

服務既可以啟動,也可以綁定連接。 在這種情況下,只要系統啟動或者使用Context.BIND_AUTO_CREATE標志有一個或多個連接,系統就會保持服務運行。 一旦這些情況都不成立,就會調用服務的onDestroy()方法並有效終止服務。 onDestroy()返回時,應完成所有清理(停止線程,取消注冊接收器onDestroy()

文檔清楚地表明系統支持同時綁定和啟動。 在常規Service上使用IntentService不會改變這一點。 即使您在處理Intent后明確停止服務,只要某些內容仍然綁定,Android就會使其保持運行狀態。

此外,根據OP嘗試做什么,可能不再需要IntentService

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM