在开源库中:android-async-http,有一个方法cancelRequests(context,boolean):
public void cancelRequests(final Context context, final boolean mayInterruptIfRunning) {
if (context == null) {
Log.e(LOG_TAG, "Passed null Context to cancelRequests");
return;
}
Runnable r = new Runnable() {
@Override
public void run() {
List<RequestHandle> requestList = requestMap.get(context);
if (requestList != null) {
for (RequestHandle requestHandle : requestList) {
requestHandle.cancel(mayInterruptIfRunning);
}
requestMap.remove(context);
}
}
};
if (Looper.myLooper() == Looper.getMainLooper()) {
new Thread(r).start();
} else {
r.run();
}
}
cancelRequests
函数将被调用如下。
class TestActivity extends Activity {
@Override
protected void onDestroy() {
cancelRequests(this, true);
super.onDestroy();
}
}
这是内存泄漏?怎么解决?
答案 0 :(得分:0)
目前不会取消或销毁异步任务 活动被驳回
不要像
那样调用停止异步cancelRequests(this,true);
让系统决定它。您只能通过检查值暂停和停止它,或者永久停止。这是真正的算法