Super_Jichao.Jia 2022-10-21 16:14 采纳率: 100%
浏览 27
已结题

handler机制消息循环发送

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

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

  • 写回答

3条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-10-24 11:34
    关注
    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);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 寒门亭 2022-10-21 16:25
    关注

    img


    是这个意思嘛

    评论
  • 码上就疯 2022-10-21 17:16
    关注

    模拟假进度条吗?那推荐使用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毫秒执行一次
    
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 创建了问题 10月21日

悬赏问题

  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 要求编写稀疏矩阵A的转置矩阵的算法
  • ¥15 编写满足以下要求的停车场管理程序,设停车场只有一个可停放n辆车的狭窄通道且只有一个大门可供车辆进出。
  • ¥15 C语言:数据子序列基础版
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 用keil调试程序保证结果进行led相关闪烁
  • ¥15 paddle训练自己的数据loss降不下去
  • ¥20 用matlab的pdetool解决以下三个问题
  • ¥15 单个福来轮的平衡与侧向滑动是如何做到的?
  • ¥15 嵌入式Linux固件,能直接告诉我crc32校验的区域在哪不,内核的校验我已经找到了,uboot没有