程式碼
class DownTask extends AsyncTask<URL, Integer, String> {
Context mContext;
public DownTask(Context ctx) {
mContext = ctx;
}
// ...
}
解析
DownTask 繼承 AsyncTask,建構子接收 Context 並存為成員變數。
- Context 作用:提供應用程式環境資訊,常用於:
- 存取資源(
getResources()、getString())。
- 啟動 Service、發送 Broadcast、啟動 Activity。
- 取得系統服務(
getSystemService())。
- 建立 View、Dialog、Toast 等 UI 元件。
- 在
doInBackground 或 onPostExecute 中若需上述操作,即可透過 mContext 呼叫。
注意事項
- 避免長時間持有
Activity 參考導致記憶體洩漏;若任務長於 Activity 生命週期,建議傳 ApplicationContext(ctx.getApplicationContext())。
- 若僅在
doInBackground 做網路請求,onPostExecute 更新 UI,確保 mContext 仍為有效 Activity。