Android wait AsyncTask to finish Android wait AsyncTask to finish multithreading multithreading

Android wait AsyncTask to finish


You have two options:

Either use the AsyncTask's method get(long timeout, TimeUnit unit) like that:

task.get(1000, TimeUnit.MILLISECONDS);

This will make your main thread wait for the result of the AsyncTask at most 1000 milliseconds (as per @user1028741 comment: actually there is also infinetly waiting method - AsyncTask#get() which might also do the work for you in some cases).

Alternatively you can show a progress dialog in the async task until it finishes. See this thread (No need for me to copy past the code). Basically a progress dialog is shown while the async task runs and is hidden when it finishes.

You have even third option:" if Thread is sufficient for your needs you can just use its join method. However, if the task is taking a long while you will still need to show a progress dialog, otherwise you will get an exception because of the main thread being inactive for too long.


try using

if (AppHelper.isOnline(this))        {            while(!task.isCancelled()){               // waiting until finished protected String[] doInBackground(Void... params)                        }             intent = new Intent(this, OrdineCreaActivity.class);            this.startActivityForResult(intent, R.id.buttonPagamenti);        }    

For more information read http://developer.android.com/reference/android/os/AsyncTask.html


intent = new Intent(this, OrdineCreaActivity.class);context.startActivityForResult(intent, R.id.buttonPagamenti);

Write the above lines in onPostExecute() of you AysncTask. Because if we are using AsyncTask it wont wait there until the task complete.