我的應用程序包含一個函數,需要花費時間來加載(解析文件)。 該功能是在多用戶情況下調用的,即來自多用戶觸發條件。 此外,它調用onCreate時調用。安卓異步任務的使用順序依賴任務
在簡單的一句話,流量:
- 用戶點擊/ OnCreate中觸發
- 功能解析文件
- 後到窗口
- 其他後期處理時
希望用戶可以點擊取消來停止解析文件。
我試着用asynctask。我知道我可以把函數放在onPostExecute上。 但我認爲onPostExecute只是用於解僱進度對話框。或者我必須將很多代碼(針對不同情況)移動到它。不是一個好主意。
我不假設用戶在解析文件時做任何事情。
那麼,最好的辦法是什麼?儘管我知道它不好,但我認爲我必須佔用UI線程。
簡而言之,我想等待「解析文件」,但我不想佔用UI線程,因此用戶可以單擊取消。
更新: 我試過了。但是,有一個問題: 我使用asynctask。我打電話給:
mTask = new YourAsyncTask().execute();
YourAsyncTask.get(); // this force to wait for YourAsyncTask to return.
DoSomethingBaseOnAsyncTaskResult();
YourAsyncTask.get()持有UI線程。因此,沒有加載對話框,並且用戶無法從對話框中單擊取消。看來我以後
mTask = new YourAsyncTask().execute();
每行移動到
OnPostExecute()
但我並不喜歡這樣做,因爲DoSomethingBaseOnAsyncTaskResult()可以根據返回的結果有很大的不同。否則,就成了YourAsyncTask()做的一切
請參閱我的問題的更新,感謝了很多! – manhon
請詳細說明您的要求。 –