AsyncTask中的Android上下文泄漏

如果我正确地解释这个 article,将活动上下文传递给AsyncTasks是一个潜在的泄漏,因为活动可能在任务仍在运行时被销毁.

在AsyncTasks中如何处理这些不是内在的内容,需要访问资源或更新UI?

另外,如果您需要引用进度对话框来关闭它们,那么如何避免上下文泄漏?

解决方法

如果我正确地理解你的问题:Java的WeakReference或SoftReference类很适合这种情况.它将允许您将上下文传递到AsyncTask,而不必在必要时避免GC释放上下文.

收集WeakReferences时,GC比在收集SoftReferences时更加渴望.

代替:

FooTask myFooTask = new FooTask(myContext);

你的代码看起来像:

WeakReference<MyContextClass> myWeakContext = new WeakReference<MyContextClass>(myContext);
FooTask myFooTask = new FooTask(myWeakContext);

在AsyncTask中,而不是:

myContext.someMethod();

你的代码看起来像:

myWeakContext.get().someMethod();

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...