//平时咱们用如下这种写法会存在内存泄露 Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.what == 1) { text_show.setText((String) msg.obj); } }; }; //因此为了改进这个,如下方式使用了弱引用的方式来声明,对上面的这种方法进行改进 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // hangdler使用弱引用进行内存泄露优化 private final MyHandler handler = new MyHandler(this);//this表明了传入的Activity // 建一个静态内部类 private static class MyHandler extends Handler { // 弱引用对象 WeakReference<MainActivity> weakReference; // 定义一个构造函数,传入一个MainActivity public MyHandler(MainActivity activity) { weakReference = new WeakReference<MainActivity>(activity); } // 实现Handler里面的方法 @Override public void handleMessage(Message msg) { super.handleMessage(msg); // 经过软引用对到MainActivity对象进行引用 MainActivity activity = weakReference.get(); if (activity != null) {// 若是MainActivity没有退出,获取到的不是空你才进行下一步操做进行发送消息 } } } }