Android 使用 Handler 避免内存泄漏的一些建议
来源:互联网 发布:anconda tensorflow 编辑:程序博客网 时间:2024/05/21 08:49
内存泄漏是 Android 开发中经常出现的错误。由于我们发送的消息会在 Handler 的 Looper 中不断轮循处理,这样 Handler 的声明周期比 Activity 会更长。所以在使用 Handler 时我们应该将其设为静态内部类,这样可以避免他的实例在 Activity 退出后还持有外部 Activity 的引用导致内存泄漏。还有在 Handler 的中使用外部成员变量是应该尽量使用弱引用,在 Activity 的 destroy 方法中清空消息这样也能减少内存泄漏的可能。下面展示下示例代码:
public class MainActivity extends AppCompatActivity { private MyHandler mHandler = new MyHandler(this); private TextView mTextView ; private static class MyHandler extends Handler {//将Handler声明成静态内部类 private WeakReference<context> reference;//引用外部变量使用弱引用 public MyHandler(Context context) { reference = new WeakReference<>(context); } @Override public void handleMessage(Message msg) { MainActivity activity = (MainActivity) reference.get(); if(activity != null){ activity.mTextView.setText(""); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView)findViewById(R.id.textview); loadData(); } private void loadData() { //...request Message message = Message.obtain(); mHandler.sendMessage(message); } @Override protected void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null);//清空 Handler 的消息操作 }}
阅读全文
0 0
- Android 使用 Handler 避免内存泄漏的一些建议
- Android Handler 避免内存泄漏
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android Handler 避免内存泄漏的用法总结
- Android Handler 避免内存泄漏的用法总结
- Android Handler 避免内存泄漏的用法总结
- 为啥使用静态的handler对象避免内存泄漏呢?
- 如何避免使用Handler造成的内存泄漏
- c++作业6——数组2
- SVN版本控制
- sublime text3 less和scss文件高亮显示
- c/c++中const、static的区别
- Java基础编程1—比较三个整数的大小
- Android 使用 Handler 避免内存泄漏的一些建议
- 侦察兵(特长生准备)
- CocoaPods中pod search失效解决办法
- RabbitMQ 概念与Java例子
- install docker on Ubuntu 14.04
- java中域对象总结
- Linux下MQ安装步骤及MQ常用命令
- qml学习资料=网站备份
- POJ 1741 Tree