作家
登录

Android面试被问到内存泄漏了杂整?

作者: 来源: 2017-12-19 09:15:40 阅读 我要评论

  •  
  • 在该TestActivity中声清楚明了一个延迟10分钟履行的消息 Message,mHandler将其 push 进了消息队列 MessageQueue 里。当该 Activity 被finish()掉落时,延迟履行义务的Message 还会持续存在于主线程中,它持有该 Activity 的Handler引用,所以此时 finish()掉落的 Activity 就不会被收受接收了大年夜而造成内存泄漏(因 Handler 为风静态内部类,它会持有外部类的引用,在这里就是指TestActivity)。

    修复办法:采取内部静态类以及弱引用筹划。代码如下:

    1. public class TestActivity extends AppCompatActivity {     
    2.  
    3.     private MyHandler mHandler;     
    4.  
    5.     private static class MyHandler extends Handler {         
    6.  
    7.         private final WeakReference<TestActivity> mActivity;         
    8.  
    9.         public MyHandler(TestActivity activity) { 
    10.  
    11.             mActivity = new WeakReference<>(activity); 
    12.  
    13.         }      
    14.  
    15.     
    16.  
    17.         @Override 
    18.  
    19.         public void dispatchMessage(Message msg) {             
    20.  
    21.             super.dispatchMessage(msg); 
    22.  
    23.             TestActivity activity = mActivity.get();             
    24.  
    25.             //do your things 
    26.  
    27.         } 
    28.  
    29.     }     
    30.  
    31. private static final Runnable mRunnable = new Runnable() {         
    32.  
    33.         @Override 
    34.  
    35.         public void run() {             
    36.  
    37.             //do your things 
    38.  
    39.         } 
    40.  
    41.     };     
    42.  
    43.     @Override 
    44.  
    45.     protected void onCreate(@Nullable Bundle savedInstanceState) {         
    46.  
    47.         super.onCreate(savedInstanceState); 
    48.  
    49.         mHandler = new MyHandler(this); 

        推荐阅读

        一周云势:合纵连横竞争加剧,天上地下欢喜冤家

      此次的成功融资让金山云的用户也跟着受益,因为金山云的主流产品将周全降价,个中CDN、云数据库Redis新价动人,降幅最大年夜可达到50%、60%;云办事器价格最大年夜降幅跨越30%;对象存储产品>>>详细阅读


      本文标题:Android面试被问到内存泄漏了杂整?

      地址:http://www.17bianji.com/lsqh/39898.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)