使用进度对话框同步方法

时间:2012-07-01 16:57:23

标签: android

我有loadData()用于加载我的Neuroph网络。

我想用进度对话框运行它,但如果执行了loadData()的一部分,我会增加进度对话框。

我需要教程。

我知道Thread with Handler,AsyncTask。但不能用这两种方法做到这一点。

1 个答案:

答案 0 :(得分:1)

因此,我建议您使用为更新AsyncTask指定的有意义UI并取得一些进展。该工具包含三个最重要的方法:

  • doInBackground - 它正在后台线程中完成您的工作。
  • onProgressUpdate - 更新UI(在您的情况下,您可以增加ProgressDialog的进度)
  • onPostExecute - 在您的工作完成后调用它。

    然后,AsyncTask是强大的工具,效率很高,也使用泛型,因此是类型安全的。但是你需要阅读更多关于它的信息,所以首先看看reference,然后我建议你看看Android Threads, Handlers and AsyncTask关于Vogella,它是很好的来源。


    然后你想使用ProgressDialog。 因此,在执行show()之前,只需创建它并AsyncTask即可。然后在 onPostExecute 方法中,您只需调用关闭方法即可解除 ProgressDialog

    ProgressDialog pd = new ProgressDialog(this);
    pd.setProgress(0);
    pd.setTitle("Some title");
    pd.setMessage("Some message...");
    pd.show();
    yourTask.execute(); // here you are executing your AsyncTask
    

    然后在你的OnPostExecute方法中,只需调用dismiss:

    @Override
    protected void onPostExecute(Void unused) {
       pd.dismiss(); // dismissing your ProgressDialog
    }