zoukankan      html  css  js  c++  java
  • Handler作为Activity的内部类有可能会导致内存泄露

    Handler作为Activity的内部类有可能会导致内存泄露的问题。具体如何解决,在国外有人提出,如下:

    Issue: Ensures that Handler classes do not hold on to a reference to an outer class

    In Android, Handler classes should be static or leaks might occur. Messages enqueued on the application thread's MessageQueue also retain their target Handler. If the Handler is an inner class, its outer class will be retained as well. To avoid leaking the outer class, declare the Handler as a static nested class with a WeakReference to its outer class. 

    大体翻译如下:

    Handler 类应该应该为static类型,否则有可能造成泄露。在程序消息队列中排队的消息保持了对目标Handler类的应用。如果Handler是个内部类,那 么它也会保持它所在的外部类的引用。为了避免泄露这个外部类,应该将Handler声明为static嵌套类,并且使用对外部类的弱应用。

    使用范例:

     

        static class MyHandler extends Handler {  
                        WeakReference<PopupActivity> mActivity;  
          
                        MyHandler(PopupActivity activity) {  
                                mActivity = new WeakReference<PopupActivity>(activity);  
                        }  
          
                        @Override  
                        public void handleMessage(Message msg) {  
                                PopupActivity theActivity = mActivity.get();  
                                switch (msg.what) {  
                                case 0:  
                                        theActivity.popPlay.setChecked(true);  
                                        break;  
                                }  
                        }  
                };  
          
                MyHandler ttsHandler = new MyHandler(this);  
                private Cursor mCursor;  
          
                private void test() {  
                        ttsHandler.sendEmptyMessage(0);  
                }  
    

     

     

  • 相关阅读:
    简述序列化与反序列化
    更新Kali源&&Docker vulhub 安装
    超级弱口令爆破工具&&hydra
    通达OA任意用户登录
    读书笔记——白帽子讲Web安全
    骑士CMS搭建与利用
    记一次DVWA的SQL注入测试
    网络基础
    C#类对象的事件定义
    [开源]FreeSCADA的通道数据与控件属性关联以及自动刷新机制研究
  • 原文地址:https://www.cnblogs.com/weixiao870428/p/3593298.html
Copyright © 2011-2022 走看看