0
假設我有一個是從一個BroadcastReceiver稱爲服務:停止其內的AsyncTask前一個服務結束
@Override
public void onReceive(final Context pContext, Intent pIntent) {
String intentAction = pIntent.getAction();
if (intentAction.equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
String state = pIntent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
Intent intent = new Intent(pContext, OverlayService.class);
pContext.startService(intent);
return;
}
if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
Intent intent = new Intent(pContext, OverlayService.class);
pContext.stopService(intent);
return;
}
}
}
該服務包含內部的AsyncTask其執行的HTTP請求:
@Override
public int onStartCommand(Intent pIntent, int pFlags, int pStartId) {
new HttpTask().execute(getString(R.string.conf_server_url));
return START_STICKY;
}
我想知道當用戶決定在任務完成之前掛斷電話會發生什麼。我知道任務將繼續運行直到完成。這是否會造成內存泄漏?我的猜測是,只要任務未完成,服務就無法銷燬。但事後收集?如果沒有,有什麼建議如何解決這個問題?
我真的很喜歡這個任務繼續執行直到完成,如果可能的話。我只是不確定這是否會造成內存泄漏,因爲在調用stopService之後服務應該被銷燬,但其後的內部asynctask類仍然處於活動狀態。 –