我想在两个活动之间添加进度条

时间:2011-04-01 05:24:03

标签: android multithreading

在Android应用程序中,当第一个活动从第一个活动被调用时,我想在两个活动之间放置进度条,这样应用程序似乎处于运行状态,我认为这样的事情是通过线程完成的,如果有人知道的话请帮助我这个..

提前致谢。

4 个答案:

答案 0 :(得分:4)

Kartik是对的,但是让我添加更多内容以显示Progressbar内部活动。

如果您想显示Progressbar以及在后台获取数据,您应该在第二个活动中实现AsyncTask。

以下是一个例子:

 private class performBackgroundTask extends AsyncTask <Void, Void, Void>  
      {
               private ProgressDialog Dialog = new ProgressDialog(ClassName.this);

               protected void onPreExecute()
               {
                   Dialog.setMessage("Please wait...");
                   Dialog.show();
               }

               protected void onPostExecute(Void unused)    
               {
                   try
                   {
                       if(Dialog.isShowing())
                       {
                           Dialog.dismiss();
                       }
                               // do your Display and data setting operation here
                   }
                   catch(Exception e)
                   {

                   }

            @Override
        protected Void doInBackground(Void... params) 
            {
           // Do your background data fetching here 
               return null;   
        }
      }

添加此performBackgroundTask类后,无论何时执行,都需要调用 execute()

答案 1 :(得分:3)

您必须使用AsyncTask或Thread来获取所选数据的详细信息。通过使用它,您可以解决在两个活动之间显示进度条的问题。

AsyncTask基本示例:AsyncTask

private class LongOperation extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {
    // perform long running operation operation
    return null;
}

/* (non-Javadoc)
 * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
 */
@Override
protected void onPostExecute(String result) {
    // execution of result of Long time consuming operation
}

/* (non-Javadoc)
 * @see android.os.AsyncTask#onPreExecute()
 */
@Override
protected void onPreExecute() {
// Things to be done before execution of long running operation. For example showing ProgessDialog
}

/* (non-Javadoc)
 * @see android.os.AsyncTask#onProgressUpdate(Progress[])
 */
@Override
protected void onProgressUpdate(Void... values) {
  // Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
 }
}

答案 2 :(得分:1)

在android中只有主线程,也称为UI线程,可以进行UI操作。因此,您无法从新线程中显示进度条。 我认为你的问题的解决方案可能会显示你的第二个活动(可能是空的),从onCreate()显示进度对话框,然后在活动中做任何繁重的工作。 希望这会有所帮助。

答案 3 :(得分:1)

只需在进行计算的活动中制作ProgressDialog。

ProgressDialog progressDialog = ProgressDialog.show(context, title, text);

当你的任务完成后关闭它

if(progressDialog != null && progressDialog.isShowing())
      progressDialog.dismiss();

但请务必从UI线程中显示和关闭对话框。对于这种情况,AsyncTask可能是最好的解决方案