Android Handler Message 使用和防止Handler内存泄漏

public class MainActivity extends Activity implements View.OnClickListener {

    public static final int UPDATE_TEXT = 1;
    private static TextView mtext;
    private Button mbutton;
    private final Myhander myhander = new Myhander(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mtext = findViewById(R.id.text);
        mbutton = findViewById(R.id.change_text);
        mbutton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.change_text:
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        String str = "你年龄:";
                        Message message = new Message();
                        message.what = UPDATE_TEXT;
                        message.obj = str;
                        message.arg1 = 1;
                        message.arg2 = 8;
                        myhander.sendMessage(message);

                    }
                }).start();
                break;

        }
    }

    private static class Myhander extends Handler {
        private final WeakReference<MainActivity> mainActivity;

        Myhander(MainActivity activity) {
            mainActivity = new WeakReference<>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            MainActivity activity = mainActivity.get();
            if (activity != null) {
                switch (msg.what) {
                    case UPDATE_TEXT:
                        String mstring = (String) msg.obj;
                        int age = msg.arg1;
                        int age1 = msg.arg2;
                        //这行代码有警告,不能应该这样写,我测试写法
                        mtext.setText(mstring + age + age1);
                        break;
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/yineng7758258/article/details/84335304