内存泄漏有关活动

时间:2015-04-21 02:01:42

标签: android memory-leaks

在开源库中: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();
    }
}

这是内存泄漏?怎么解决?

1 个答案:

答案 0 :(得分:0)

  

目前不会取消或销毁异步任务   活动被驳回

不要像

那样调用停止异步
  

cancelRequests(this,true);

让系统决定它。您只能通过检查值暂停和停止它,或者永久停止。这是真正的算法