在我的Android应用程序中,我正在执行扩展AsyncTask的耗时任务,并希望在Toast消息中显示进度。吐司消息也显示在Pre()和onPost()上。

我可以在ToPre()和onPost()上显示Toast消息,但不能显示onProgressUpdate(Integer ... progress)。

以下是我的代码...

public class MainClass extends Activity {


    public void Start(View view) {
         DemoTasks runner = new DemoTasks(this);

         runner.execute("Start");
    }

    private class DemoTasks extends  AsyncTask<String, Integer, Integer> {

        private Context context;

        public DemoTasks(Context context){
                this.context = context;
        }

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

            publishProgress(0);

            doWork();
            Thread.sleep(5000L);

            publishProgress(100);

        } catch (Exception localException) {
            Log.d("POST", localException.getMessage());
        }


        return 100;
    }


    @Override
      protected void onPostExecute(Integer result) {
        Toast.makeText(context, "post", Toast.LENGTH_SHORT).show();
      }


      @Override
      protected void onPreExecute() {
          Toast.makeText(context, "pre", Toast.LENGTH_SHORT).show();
      }


      @Override
      protected void onProgressUpdate(Integer... progress) {
          super.onProgressUpdate(progress);
          Toast.makeText(context, "progress-" + progress, Toast.LENGTH_SHORT).show();
      }


   }

  }


另外在我的doInBackgroud(String ... params)... Thread.sleep也无法正常工作。
一旦onPre()被执行,onPost()也会在那之后执行!!!

最佳答案

你可以试试看

showProgress ();
new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        dialog.cancel();
        Intent i=new Intent(getApplicationContext(),Main.class);
        startActivity(i);
        finish();

    }
}, 3000); //number of seconds

private ProgressDialog dialog;
     public  void showProgress () {
        dialog = new ProgressDialog(this);
        dialog.setCancelable(true);
        dialog.setMessage("Please wait");
        dialog.show();}


基本上,您可以使用任何方法访问UI,即使在doinBackground中,您也可以使用runOnUIthread访问UI。

关于java - Java AsyncTask通过publishProgress(progress)在UI上未显示进度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24234799/

10-14 11:41
查看更多