我的应用程序包含一个函数,需要花费时间来加载(解析文件)。 该功能是在多用户情况下调用的,即来自多用户触发条件。 此外,它调用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
请详细说明您的要求。 –