zoukankan      html  css  js  c++  java
  • 【优化】Handler可能发生泄漏


    1
    private Handler mHandler = new Handler() { 2 public void handleMessage(Message msg) { 3 switch (msg.what) { 4 case 1: { 5 break; 6 case 2: 7 break; 8 } 9 } 10 };

         一般写Handler的时候会向以上这么写,这样写话的话,Eclipse会提示“This Handler class should be static or leaks might occur ”  大概意思是这个Handler类应该是静态的或可能发生泄漏。所以需要修改成以下这种写法。

     1     private MyHandler handler;
     2       
     3     private static class MyHandler extends Handler {
     4         // PayActivity是本Activity类
     5         WeakReference<PayActivity> aaa = null;
     6         public MyHandler(PayActivity bbb) {
     7             this.aaa = new WeakReference<PayActivity>(bbb);
     8         }
     9         public void handleMessage(Message msg) {
    10             PayActivity payF = aaa.get();
    11             if (payF == null)
    12                 return;
    13 
    14             switch (msg.what) {
    15             case 1:
    16                 break;
    17             case 2:
    18                 payF.deal(msg);
    19                 break;
    20             }
    21 
    22         };
    23     };
    24 
    25     // 在onCreate()方法里面实例化MyHandler
    26     handler = new MyHandler(this);

       这样就O了。

           

  • 相关阅读:
    综合:bool类型 命名空间 输入输出
    C++命名空间
    C++输入输出
    C++新特性
    C++ IDE环境
    C++简介
    3 python3 编码解码问题 upd接受数据
    2 socket UDP通信
    1 网络基础知识
    15 GIL 全局解释器锁 C语言解决 top ps
  • 原文地址:https://www.cnblogs.com/androidsj/p/3014429.html
Copyright © 2011-2022 走看看