为了账号安全,请及时绑定邮箱和手机立即绑定

在Android中开始活动之前如何显示进度对话框?

/ 猿问

在Android中开始活动之前如何显示进度对话框?

一只名叫tom的猫 2019-11-15 17:00:02

在Android中开始活动之前(即活动正在加载一些数据时),如何显示进度对话框?



查看完整描述

3 回答

?
函数式编程

您应该在AsyncTask中加载数据,并在数据加载完成后更新您的界面。


您甚至可以使用AsyncTask的onPostExecute()方法开始新的活动。


更具体地说,您将需要一个扩展AsyncTask的新类:


public class MyTask extends AsyncTask<Void, Void, Void> {

  public MyTask(ProgressDialog progress) {

    this.progress = progress;

  }


  public void onPreExecute() {

    progress.show();

  }


  public void doInBackground(Void... unused) {

    ... do your loading here ...

  }


  public void onPostExecute(Void unused) {

    progress.dismiss();

  }

}

然后在您的活动中,您将执行以下操作:


ProgressDialog progress = new ProgressDialog(this);

progress.setMessage("Loading...");

new MyTask(progress).execute();


查看完整回答
反对 回复 2019-11-15
?
慕容4345310

当您在Android上启动长时间运行的进程时,建议始终在另一个线程上执行此过程。然后,您可以使用UI线程显示进度对话框。您不能在运行该进程的同一(UI)线程中显示进度对话框。


执行以下操作开始您的过程


pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");

Thread t = new Thread(this);

t.start();

为此,您的活动应实现Runnable,如下所示


public class SyncDataActivity extends Activity implements Runnable

最后是执行长时间运行的方法


@Override

public void run() {

      //your code here

}


查看完整回答
反对 回复 2019-11-15
?
翻过高山走不出你

私有类MyTask扩展了AsyncTask <Void,Void,Void> {私有ProgressDialog进度;公共MyTask(ProgressDialog progress){this.progress =进度;} protected void onPreExecute(){progress = ProgressDialog.show(Startup.this,“”,“正在加载。请稍候...”,true); } @Override protected Void doInBackground(Void ... arg0){//执行某些方法将返回null;} @Override protected void onPostExecute(无效结果){progress.dismiss(); }}

查看完整回答
反对 回复 2019-11-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信