在Android Studio
中Activity
中只要定义一个Handler
,IDE
就会报出大量的黄底提醒。用static
也不行。想问一下要在Activity
中定义个Handler
,正确的书写姿势是什么?
在Android Studio
中Activity
中只要定义一个Handler
,IDE
就会报出大量的黄底提醒。用static
也不行。想问一下要在Activity
中定义个Handler
,正确的书写姿势是什么?
弱引用的方式调用
private static class MyHandler extends Handler {
private final WeakReference<Activity> mActivity;
public MyHandler(Activity activity) {
mActivity = new WeakReference<>(activity);
}
}
比如上面这样引用。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
不正确地使用Handler容易导致内存泄露,应该避免使用非静态内部类,继承Handler时,要么是放在单独的类文件中,要么就是使用静态内部类。
参考:
[技术小黑屋 的一篇文章][1]
http://droidyue.com/blog/2014/12/28/in-android-handler-classes-should-be-static-or-leaks-might-occur/