【问题标题】:progress dialog in main activity's onCreate not shown未显示主要活动的 onCreate 中的进度对话框
【发布时间】:2012-06-05 22:25:15
【问题描述】:

在启动画面之后,在 Main 活动中加载 onCreate 内容大约需要 6 秒。所以我想在加载时显示一个进度对话框,这就是我所做的:

import ...

private ProgressDialog mainProgress;

public void onCreate(Bundle davedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    mProgress = new ProgressDialog (Main.this);
    mProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    mProgress.setMessage("Loading... please wait");
    mProgress.setIndeterminate(false);
    mProgress.setMax(100);
    mProgress.setProgress(0);
    mProgress.show();

    ---some code---

    mProgress.setProgress(50);

    ---some code---

    mProgress.setProgress(100);
    mProgress.dismiss();
}

它不起作用...屏幕保持黑色 5-6 秒,然后加载主布局。我不知道我做错了哪一部分:*(

【问题讨论】:

标签: android dialog progressdialog oncreate


【解决方案1】:

您需要在其他线程(而不是 UI 线程)中启动繁忙的代码。
在您的活动中创建 ProgressDialog 并在线程中关闭它

mProgress = new ProgressDialog (Main.this);

Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // code that needs 6 seconds for execution

        // after finishing, close the progress bar
        mProgress.dismiss();
    }
};

new Thread(runnable).start();

【讨论】:

    【解决方案2】:

    这是因为你在 UI 线程上做所有事情,因此阻塞了它。

    您应该在一个单独的线程中完成所有繁重的工作,并通过该线程更新进度对话框

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多