android handler 如何規避內存泄漏

直接上代碼,使用兩種辦法ide

1,靜態內部類this

/**
 * 聲明一個靜態的Handler內部類,並持有外部類的弱引用
 */
private static class MyHandler extends Handler{

    private final WeakReference<ServerActivity> mActivty;

    private MyHandler(ServerActivity mActivty) {
        this.mActivty = new WeakReference<ServerActivity>(mActivty);
    }

    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        ServerActivity activity = mActivty.get();
        if (activity != null){
          //注意,這裏的test,btn_closeServer都是成員變量
            activity.test ="hello";
            activity.btn_closeServer.setText(" 小樣,你好嗎");

        }
    }
}

2,spa

在activity 的ondestory()的時候,
調用mHandler.removeCallbacksAndMessages(null);rem

相關文章
相關標籤/搜索