其他分享
首页 > 其他分享> > Android-内部类AsyncTask是否必须具有WeakReference?

Android-内部类AsyncTask是否必须具有WeakReference?

作者:互联网

假设我在Activity类中有一个内部类AsyncTask.
我必须在这个AsyncTask中拥有weakRefeernce吗?

另外,我是否一直都必须对AsyncTask具有weakReference?

最后,如果我将内部类AsyncTask声明为静态,是否安全?

解决方法:

是的,如果Asynctask是内部类或只是创建自己的类,则始终将其声明为静态,请尝试避免将其声明为非静态内部类,因为这会导致内存泄漏. Read here for a more elaborate explanation why you should not do this

您不希望对Asynctask使用WeakReference,因为android 2.3的垃圾收集器非常激进,可以非常快速地收集所有弱引用.弱引用通常也不是线程的好模式,它更多地用于内存占用较大的对象(如位图)(但以前在android中不再可用).

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

Starting from Android 2.3 (API Level 9) the garbage collector is more aggressive with collecting soft/weak references which makes them fairly ineffective.

标签:android-asynctask,weak-references,android
来源: https://codeday.me/bug/20191030/1966682.html