handler机制消息循环发送

利用handler机制 每隔1s发送一次消息 不适用线程 仅利用handler和message

利用handler+message 模拟一个4分钟的加载进度条

public class Test {
    private static final int MESSAGE = 100;
    private int timerCount = 0;
    public Test() {
        handler.sendEmptyMessageDelayed(MESSAGE, 1000);
    }

    private final Handler.Callback callback = new Handler.Callback() {
        @Override
        public boolean handleMessage(@NonNull Message msg) {
            if (msg.what == MESSAGE) {
                if (timerCount >= 4 * 60)
                    return false;
                timerCount++;
                handler.sendEmptyMessageDelayed(MESSAGE, 1000);
            }
            return false;
        }
    };

    private final Handler handler = new Handler(Looper.getMainLooper(), callback);
}

img


是这个意思嘛

模拟假进度条吗?那推荐使用Timer算了

        ProgressBar progressBar = findViewById(R.id.progress);
        double single = (float)100/240;//因为需求是1秒一下,所以进度条Max 100/240 得到单次涨多少
        final int[] count = {240,0};//在TimerTask中使用需要改成数组,
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (count[0] ==0){//如果240次跳完,则取消Timer循环
                    timer.cancel();//取消循环
                }else {
                    count[0]--;//需要240次,每次减1
                    count[1]=(int) Math.floor(100-(single*count[0]));//当前进度
                    Log.i("当前进度",""+count[1]);
                    progressBar.setProgress(count[1]);//设置当前进度
                }
            }
        },0,1000);//延迟0秒执行,1000毫秒执行一次