我想我沒有得到關於android活動生命週期的東西。調用AsyncTask時,何處獲取新Intent的上下文?
所以這裏是我的情況 - 我有一個AsyncTask來完成將XML文件上傳到服務器的工作。當用戶在活動中填寫所需數據後按下按鈕時調用它。被調用後,我不再需要這個活動了,所以我打電話給finish();立即。
task = new ASSend(data);
task.execute();
finish();
不過,我需要顯示的情況下的AsyncTask(所以我需要爲使用的AlertDialog或對話爲主題的意圖)的執行過程中出現問題的錯誤信息,我也需要打開文件在doInBackground與
FileInputStream fis;
fis = context.openFileInput(filePath);
需要上下文。即使啓動AsyncTask的活動不再存在,是否可以傳遞啓動AsyncTask的活動的上下文來完成所有這些操作?
你可以保持對它的引用,但是這將是一個可怕的上下文泄漏:http://android-developers.blogspot.de/2009/01/avoiding-memory-leaks.html – zapl
你爲什麼不使如果上傳失敗,異步任務將啓動的新對話框活動。它可以要求用戶再次嘗試... – Shmuel
啓動服務(而不是強制AsyncTask啓動你的Activity)執行你的ASyncTask。你可以在後臺爲你想要的一切服務。 – Vyacheslav