我有mai Asynctask运行一个taks.in onPostExecute方法我已经执行了另一个运行了近50次的Asynctask。
@Override
protected void onPreExecute() {
progressBar = new ProgressBar(MainActivity.this,null,android.R.attr.progressBarStyleHorizontal);
progressDialog = new AlertDialog.Builder(MainActivity.this,
....
protected void onPostExecute(String result) {
...
for (Get_NIdCadastre_NIdVisitContractCadastre get : a) {
get_List_Visit visit = new get_List_Visit(get.getNIdCadastre(), get.getNIdVisitContractCadastre());
visit.executeOnExecutor((AsyncTask.THREAD_POOL_EXECUTOR), NIdCadastre, NIdVisitContractCadastre);
...
if (progressDialog.isShowing()){
progressDialog.dismiss();
}
现在,通过 publishProgress 在 doInBackground 方法的get_List_Visit任务中,我希望显示正在运行的任务数或该任务已完成其任务:
private class get_List_Visit extends AsyncTask<String, String, String> {
@Override
protected void onProgressUpdate(String... values) {
//?
这意味着每次执行新任务时我想表明,执行的任务数量是多少!!!
我知道AsyncTask.Status.RUNNING
但我怎么能在我的情况下使用它?
抱歉我的英文!!!
我该怎么做?
答案 0 :(得分:0)
来自Android文档:
理想情况下,AsyncTasks应该用于短时间操作(几秒钟) 最多。)如果你需要保持线程长时间运行 时间,强烈建议您使用提供的各种API java.util.concurrent包,例如Executor,ThreadPoolExecutor 和FutureTask。
https://developer.android.com/reference/android/os/AsyncTask.html
从你所说的声音来看,AsyncTask不适合这项工作。我建议您查看Volley。
如果您坚持使用AsyncTask方法,则可以使用Delegate / Protocol设计模式实现它。然后在活动的回发中,您可以相应地更新进度条。
答案 1 :(得分:0)
我的一点建议是,取一个Static
int variable
并在第一个asyncTask
开始递增它并在result
递减它。最后显示当前结果您variable
中的ProgressBar
。