进度条加载消失

Posted

技术标签:

【中文标题】进度条加载消失【英文标题】:Progress bar Loading Disappear 【发布时间】:2018-04-13 12:36:03 【问题描述】:

如何使进度条加载直到执行 doBackground() 中的所有方法。我使用了 Thread.sleep,加载程序显示它之后它会暂停执行所有方法,然后返回到下一个活动

 public  class LoadDataForActivity extends AsyncTask<Void, Void, Void> 



    @Override
    protected Void doInBackground(Void... params) 

        ExecutorService executor = Executors.newSingleThreadExecutor();
        executor.execute(new Runnable() 
            public void run() 
                // Do some long running operation on a worker thread
                try 

                    Thread.sleep(200); // no need for a loop
                    cities_from();
                    cities_to();
                    srs_bus();
                    etsPick();
                    etsPick1();
                    srs_drop1();
                    srs_drop2();
                    srs_key_value();
                    key_value();
                    srs_pick1();
                    srs_pick2();
                    key_value_pick();
                    vrl_borad_id_loc();
                    vrl_board_key_value();
                    vrl_drop_id_loc();
                    vrl_drop_key_value();
                    vrl_bus();
                    bitla_key_value_pick2();
                    ets_bus();
                    bitla_drop();
                    bitla_drop1();
                    bitla_drop2();
                    bitla_key_value();
                    bitla_key_value1();
                    bitla_pick1();
                    bitla_pick2();
                    bitla();
                    srs();
                    tabs();
                    cancel_policy();
                 catch (InterruptedException e) 
                    Log.e("LongOperation", "Interrupted", e);

                
            
        );

        return null;
    

    @Override
    protected void onPreExecute() 
        super.onPreExecute();
        pd=new ProgressDialog(BusOperators.this);
        pd.setTitle("Title");
        pd.setMessage("Please Wait.... ");
        pd.setCancelable(false);
        pd.show();
    

    protected void onPostExecute(Void v) 
            super.onPostExecute(v);
            pd.dismiss();
    
    protected void onProgressUpdate(String... progress) 
        // Update UI to show progress
    /* prgDialog.setProgress(Integer.parseInt(progress[0])); */
    


我希望进度条一直保持到 doBackground() 中的所有方法都被执行

【问题讨论】:

【参考方案1】:

你必须设置:

progressBar.setVisibility(VISIBLE)

在你开始运行线程之前,在onPostExecute设置:

progressBar.setVisibility(GONE)

【讨论】:

我使用了 Progess 对话框 pd= new ProgressDialog(this);pd.show();在 postExecute() 中的 preExecute() 和 pd.dismiss() 中,但加载动画正在旋转,然后停止几秒钟并加载页面。我希望加载动画旋转直到页面完全加载 首先你需要在 xml 中声明你的进度条,并且在活动中找到这样的:ProgressBar pd; pd = (ProgressBar) findViewById(R.id.your_pb_id); pd.setVisibility(View.VISIBLE) -> 在 preExecute(); pd.setVisibility(View.GONE) -> 在 onPostExecute();我从来没有使用 show() 和 dismiss() 作为进度条。【参考方案2】:

使用executor.execute时控件直接返回,控件转到onPostExecute方法

只需在executor.executedoInBackground 方法中解开您的代码

【讨论】:

加载动画不可见 cities_from() 这样的方法是否在单独的后台线程中运行?

以上是关于进度条加载消失的主要内容,如果未能解决你的问题,请参考以下文章

进度条(视频预加载器)

使用 Glide 库设置完成图像加载后进度条的可见性

将加载指示器/进度条添加到 Phonegap Android 闪屏

jQuery UI - 如何在加载时在页面顶部显示进度条

uploadifive.js怎么去掉进度条

VUE----页面加载进度条