• 使用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
  • 相关阅读:
    微信小程序-默认选中状态
    微信小程序-翻页(优化)
    openLayers3 中实现多个Overlay
    2月的最后一天
    2月27日
    杂记--写于狂风乱作的夜晚
    安装部署程序
    superMap Object 属性查看的一点代码
    坚持不懈的学习吧,少年
    Windows API中几个函数的总结
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/9062608.html
Copyright © 2020-2023  润新知