重工作的Asynctask替代方案(在UI中添加大量片段)

问题描述 投票:0回答:1

我得到两个给定日期之间的所有日期,然后在两个日期之间创建片段。问题是当我使用Asynctask并将该方法放入doinbackground时,有时它不起作用。

特别是当我打开包含来自另一个活动的活动的Asynctask时。但是在按钮上单击内部活动它可以使用进度条。

public class WaitForLoad extends AsyncTask<String, Integer, String>{
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pro_bar.setVisibility(View.VISIBLE);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        pro_bar.setVisibility(GONE);
    }

    @Override
    protected String doInBackground(String... strings) {
        get_con_fro_sta_to_end(dat_ran_sta, dat_ran_end);
        return null;
    }
}

所以根据Asynctask文档,它应该是3秒。但是如果我在方法中放一整年,那么加载大约需要8秒钟。

那么Asynctask还有任何工作吗?或者你可以建议我一个例子替代方案就像使用处理程序一样。

java android android-asynctask background-task
1个回答
0
投票

我认为你正在从你的“get_con_fro_sta_to_end()”方法改变接口......这是不允许从后台线程然后它应该以某种方式改变。

AsyncTasks具有“void onProgressUpdate()”,用于在每次从“doInBackground()”调用“publishProgress()”时执行UiThread / MainThread中的代码。

DoInBackground()不应该触摸接口,而只是准备使用“onPostExecute()”(在UiThread / MainThread中运行代码)显示数据/事物

© www.soinside.com 2019 - 2024. All rights reserved.