进度条加载消失
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.execute
的doInBackground
方法中解开您的代码
【讨论】:
加载动画不可见 像cities_from()
这样的方法是否在单独的后台线程中运行?以上是关于进度条加载消失的主要内容,如果未能解决你的问题,请参考以下文章