You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android ProgressBar进度完成后调用Toast导致应用崩溃如何解决

崩溃原因
  • 安卓所有UI相关操作必须运行在主线程(UI线程),你当前调用Toast.makeText以及progressBar.dismiss()的代码写在自定义的子线程中,子线程默认没有初始化Looper,无法处理UI相关的消息,因此触发崩溃,崩溃日志也明确提示了该问题。
修复方案

利用你已经初始化好的、绑定主线程的ProgressBarHandler,将完成后的UI操作抛到主线程执行即可,修改对应代码块如下:

if (ProgressBarStatus >= 100) {
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    // 将UI操作post到主线程执行
    ProgressBarHandler.post(new Runnable() {
        @Override
        public void run() {
            progressBar.dismiss();
            Toast.makeText(MainActivity.this, "File Downloaded!", Toast.LENGTH_SHORT).show();
        }
    });
}

额外优化建议:如果触发下载过程中页面被销毁(比如用户按返回键关闭了页面),要及时停止工作线程、清空Handler的待处理消息,避免内存泄漏或者空指针异常。

内容的提问来源于stack exchange,提问作者A A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:06:02