• 使用handler倒计时


     点击button暂停

    public class MainActivity extends AppCompatActivity {
    
        @BindView(R.id.button)
        Button button;
    
        @BindView(R.id.first_textview)
        TextView textView;
    
        Handler mHandler;
    
        volatile boolean flag=true;
        Object object=new Object();
        MThread mThread;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            ButterKnife.bind(this);
    
    
            textView.setText(String.valueOf(1));
    
            mHandler=new Handler(){
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    textView.setText(String.valueOf(msg.what));
                }
            };
    
    
            mThread=new MThread();
            mThread.start();
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(!mThread.isAlive()){
                        mThread=new MThread();
                        mThread.start();
                        return;
                    }
                    if(flag==true){
                        flag=!flag;
                    }
                    else{
                        synchronized (object){
                            flag=!flag;
                            object.notify();
                        }
                    }
    
                }
            });
        }
    
    
        public class MThread extends Thread{
            @Override
            public void run() {
                System.out.println("enter thread");
                for(int i=20;i>=0;i--){
                    if(flag==false){
                        synchronized (object) {
                            try {
                                object.wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                    System.out.println(i);
                    mHandler.sendEmptyMessage(i);
                    try {
                        sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
    
            }
        }
    
    
    }
    View Code

    两个handler:

    public class MainActivity extends AppCompatActivity {
    
        @BindView(R.id.button)
        Button button;
    
        @BindView(R.id.textview)
        TextView textView;
    
        Handler mFirstHandler;
        Handler mSecondHandler;
    
        volatile boolean flag = true;
        Object object = new Object();
        SecondThread mThread;
        FirstThread mFirstThread;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity);
    
            ButterKnife.bind(this);
    
    
            textView.setText(String.valueOf(1));
    
            mSecondHandler = new Handler(new Handler.Callback() {
                @Override
                public boolean handleMessage(Message msg) {
                    textView.setText(String.valueOf(msg.what));
                    return true;
                }
            });
    
    
            mThread = new SecondThread();
            mThread.start();
    
            mFirstThread = new FirstThread();
            mFirstThread.start();
        }
    
    
        public class SecondThread extends Thread {
            @Override
            public void run() {
                Looper.prepare();
                Looper.loop();
                System.out.println("*****************");
                mFirstHandler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        mSecondHandler.sendEmptyMessage(msg.what);
                    }
                };
            }
        }
    
        public class FirstThread extends Thread {
            @Override
            public void run() {
                System.out.println("enter first thread");
    
                for (int i = 20; i >= 0; i--) {
                    Message message = Message.obtain();
                    message.what = i;
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    mFirstHandler.sendMessage(message);
                }
            }
        }
    
    }
    View Code

    使用ThreadHandler

    public class MainActivity extends AppCompatActivity {
    
        @BindView(R.id.button)
        Button button;
    
        @BindView(R.id.textview)
        TextView textView;
    
        Handler mFirstHandler;
        Handler mSecondHandler;
        
        Thread t=new FirstThread();
    
        volatile boolean flag = true;
        Object object = new Object();
        HandlerThread handlerThread;    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity);
    
            ButterKnife.bind(this);
    
    
            textView.setText(String.valueOf(1));
    
            mSecondHandler = new Handler(new Handler.Callback() {
                @Override
                public boolean handleMessage(Message msg) {
                    textView.setText(String.valueOf(msg.what));
                    return true;
                }
            });
            
    
            handlerThread=new HandlerThread("1");
            handlerThread.start();
            mFirstHandler=new Handler(handlerThread.getLooper()){
                @Override
                public void handleMessage(Message msg) {
                    mSecondHandler.sendEmptyMessage(msg.what);
                }
            };
    
            t.start();
        }
    
        public class FirstThread extends Thread {
            @Override
            public void run() {
                System.out.println("enter first thread");
    
                for (int i = 20; i >= 0; i--) {
                    Message message = Message.obtain();
                    message.what = i;
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    mFirstHandler.sendMessage(message);
                }
            }
        }
    
    }
    View Code
  • 相关阅读:
    核函数基础一简单解释
    矩阵的基本性质 之 正规矩阵,矩阵的迹,行列式,伴随矩阵,矩阵的逆,对角矩阵,矩阵求导
    矩阵的基本性质 之 对称矩阵,Hermite矩阵,正交矩阵,酉矩阵
    矩阵的基本性质 之 矩阵加减法,数乘,乘法,转置
    机器学习实战基础(二十七):sklearn中的降维算法PCA和SVD(八)PCA对手写数字数据集的降维
    拉格朗日对偶性
    批处理符号2
    批处理符号1
    set命令
    goto命令
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/9062608.html
Copyright © 2020-2023  润新知