假设我在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是否必须具有WeakReference?全部内容,希望文章能够帮你解决Android-内部类AsyncTask是否必须具有WeakReference?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)