//平時咱們用如下這種寫法會存在內存泄露 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沒有退出,獲取到的不是空你才進行下一步操做進行發送消息 } } } }