每日总结2023/3/12

今天初步学习了Android多线程

package com.example.text;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.lang.ref.WeakReference;

public class MainActivity3 extends AppCompatActivity {

    private Button bt_handler_send;

    private class MyHandler extends Handler {

        //弱引用持有HandlerActivity , GC 回收时会被回收掉
        private WeakReference<MainActivity3> weakReference;

        public MyHandler(MainActivity3 activity) {
            this.weakReference = new WeakReference(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            MainActivity3 activity = weakReference.get();
            super.handleMessage(msg);
            if (null != activity) {
                //执行业务逻辑
                Toast.makeText(MainActivity3.this,"handleMessage", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        //创建 Handler
        final MyHandler handler = new MyHandler(MainActivity3.this);

        bt_handler_send = findViewById(R.id.bt_handler_send);
        bt_handler_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        //使用 handler 发送空消息
                        handler.sendEmptyMessage(0);

                    }
                }).start();
            }
        });
    }

    @Override
    protected void onDestroy() {
        //移除所有回调及消息
        Handler myHandler = null;
        myHandler.removeCallbacksAndMessages(null);
        super.onDestroy();
    }
}

 

posted @ 2023-03-12 17:43  花伤错零  阅读(21)  评论(0)    收藏  举报