Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态内部类与外部类的弱引用如何避免Android内存泄漏?需要一个例子吗_Android_Memory Leaks_Static_Inner Classes_Weak References - Fatal编程技术网

静态内部类与外部类的弱引用如何避免Android内存泄漏?需要一个例子吗

静态内部类与外部类的弱引用如何避免Android内存泄漏?需要一个例子吗,android,memory-leaks,static,inner-classes,weak-references,Android,Memory Leaks,Static,Inner Classes,Weak References,我在研究这篇文章。有一些建议可以避免内存泄漏,其中一个建议如下: 如果不控制活动,请避免活动中的非静态内部类 它们的生命周期,使用静态的内部类并进行弱引用 到里面的活动。此问题的解决方案是使用静态 与外部类弱引用的内部类,如中所做 例如,ViewRoot及其W内部类 1-有人能举例说明这一点吗 2-如何使用对内部类弱引用的静态内部类 3-在应用程序中使用该静态类以避免内存泄漏的最佳实践是什么 非常感谢。在这篇文章中,答案展示了一个简单的例子,说明你在寻找什么: 但是,一个问题是,有时片段的寿命

我在研究这篇文章。有一些建议可以避免内存泄漏,其中一个建议如下:

如果不控制活动,请避免活动中的非静态内部类 它们的生命周期,使用静态的内部类并进行弱引用 到里面的活动。此问题的解决方案是使用静态 与外部类弱引用的内部类,如中所做 例如,ViewRoot及其W内部类

1-有人能举例说明这一点吗

2-如何使用对内部类弱引用的静态内部类

3-在应用程序中使用该静态类以避免内存泄漏的最佳实践是什么


非常感谢。

在这篇文章中,答案展示了一个简单的例子,说明你在寻找什么:

但是,一个问题是,有时片段的寿命比其活动的寿命长,例如,如果活动有配置更改(例如,旋转),则活动将被销毁,但片段可以保持活动状态,然后重新连接到新的(旋转的)活动。见此帖:

因此,您可能会对使用WeakReference的建议解决方案有问题,因为在循环之后,您将有一个对旧活动的引用(或者可能什么都没有)

似乎对我有用的是:

1) 当我需要活动的引用时,调用getActivity()。例如,可以在成员AsyncTask类的onPostExecute()中正确执行此操作

2) 检查结果是否为null(可能发生这种情况:片段的寿命可能比它们的活动长)

3) 检查活动是否正在完成()–您不希望在该状态下执行某些UI操作

4) 将活动强制转换为接口类型


5) 在接口类型中调用回调。

您看到了吗:?谢谢。是的,我已经看过了,但是我仍然需要一个简单的例子来解释。