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

Android Java:如何让进度条在后台线程启动前显示?

Android UI更新与后台下载的执行顺序问题

需求是用户点击按钮时,代码需按以下步骤执行:

  • 隐藏按钮(主线程执行)
  • 显示进度条(主线程执行)
  • 从互联网下载文件(后台线程执行)
  • 等待下载完成
  • 隐藏进度条
  • 再次显示按钮

实际运行不符合预期,步骤3的下载操作会在步骤1、2的UI更新前执行,多次尝试均未解决。

原代码如下:

private void f1()
{
    mDataBinding.btnPausePlay.setVisibility(btnVisibility);                    
    mDataBinding.progressPausePlay.setVisibility(progressVisibility);
}

private void f2()
{
        Thread xThread = new Thread( new Runnable()
        {   @Override
            public void run()                            // run in background thread
            { httpRequest_noBackgroundThread( urlStr, urlParams, fileStr, itf );  }
        });
        try
        {
            xThread.start();
            xThread.join();     // wait for the thread to finish
        }
           catch( Exception e ){   e.printStackTrace();  }
}


private void f3()
{
        f1();
        f2();
       // continues execution ...
}

修复方案

基于Shagun Verma的反馈,修改后的代码如下:

private void f3()
{
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    executorService.execute(() ->
    {       
        f1();
        f2();
       // continues execution ...

    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:55:39