如何向用户显示后端任务正在进行中

时间:2012-07-27 06:06:05

标签: android

在我的应用程序中,我有一个帐户激活表单,通过Internet.IN进行身份验证。平均时间(单击激活按钮后)我希望向用户显示某种UI,以便他知道激活是在进展。请你能和我分享这些代码。 另外,如何在激活应用程序后创建成功的文件。谢谢

3 个答案:

答案 0 :(得分:2)

您可以像这样使用Async任务

在OnCreate

之前声明一个进度对话框

ProgressDialog对话框;

并添加一个使用AsyncTask扩展的类,如

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

        @Override
        protected String doInBackground(String... params) {

            // perform the action which you want to do

            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

  // perform task which you want to display once background task is finished 

            dialog.dismiss();


        }

        /*
         * (non-Javadoc)
         * 
         * @see android.os.AsyncTask#onPreExecute()
         */
        @Override
        protected void onPreExecute() {

// initialize dialog 

            dialog = new ProgressDialog(Comment.this);

// set message 
            dialog.setMessage("Please wait while processing");
            dialog.setIndeterminate(true);
            dialog.setCancelable(false);
            dialog.show();

        }

        /*
         * (non-Javadoc)
         * 
         * @see android.os.AsyncTask#onProgressUpdate(Progress[])
         */
        @Override
        protected void onProgressUpdate(Void... values)

        {

        }

    }

也可以参考此链接,

http://www.vogella.com/articles/AndroidPerformance/article.html#asynctask

答案 1 :(得分:1)

看看:http://developer.android.com/reference/android/os/AsyncTask.html 当线程在后台执行时,您可以提供自己的加载布局。非常容易使用。

答案 2 :(得分:0)

当您使用AsyncTask来完成此操作时,我假设您已阅读文档。如果没有,我可以为您提供一个例子:

public void doInBackground(Void... arg0) {

  int i;

  for(i = 0; i < 10; i++) {
   publishProgress(i);
  }
}

doInBackground方法将进度发布到onProgressUpdate方法

   public void onProgressUpdate(int arg0) {
       Log.d(arg0);
    }