如果忘记写静态内部类了,99.9%情况下都不会内存泄漏。 楼主应该是看了一个handler泄漏的例子吧,内部类创建的时候,即使构造函数是空的,但实际上字节码里面会把外部类作为内部类构造函数的参数传进来的。 如果一个handler postDelay一个runnable,这个时候activity因为其他原因摧毁了,才会造成泄漏,但是这个泄漏并不会很长,只要runnable执行了就没有引用了,就不存在泄漏了,而且一般人用handler poseDelay也不会太长,太长就不适合用这个了。另外在onDestroy里面removeCallBack也可以有效避免这种情况。 静态内部类只是手段。
[quote=引用 8 楼 追风筝的孩子 的回复:]如果忘记写静态内部类了,99.9%情况下都不会内存泄漏。 楼主应该是看了一个handler泄漏的例子吧,内部类创建的时候,即使构造函数是空的,但实际上字节码里面会把外部类作为内部类构造函数的参数传进来的。 如果一个handler postDelay一个runnable,这个时候activity因为其他原因摧毁了,才会造成泄漏,但是这个泄漏并不会很长,只要runnable执行了就没有引用了,就不存在泄漏了,而且一般人用handler poseDelay也不会太长,太长就不适合用这个了。另外在onDestroy里面removeCallBack也可以有效避免这种情况。 静态内部类只是手段。
谁告诉你:定义内部静态类就能一定程度的避免内存溢出? 内存溢出,与非静态内部类或静态内部类关系在哪
80,349
社区成员
91,287
社区内容
加载中
试试用AI创作助手写篇文章吧