Android wait AsyncTask to finish

前端 未结 4 844
忘掉有多难
忘掉有多难 2020-12-04 15:47

I have a function, AppHelper.isOnline(Context context), I call in various parts of my application to check that a session didn\'t timeout before making an HTTP

4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-04 16:27

    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.

提交回复
热议问题