用于繁重工作的Asynctask替代方案(在UI中添加了很多片段)

时间:2018-12-10 06:34:23

标签: java android android-asynctask background-task

我获取两个给定日期之间的所有日期,然后为之间的每个日期创建片段。问题是当我使用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是否有任何解决方法,或者您能为我推荐一个示例替代方法,例如可能使用处理程序等等。

1 个答案:

答案 0 :(得分:0)

我认为您正在通过“ get_con_fro_sta_to_end()”方法更改Interface ...这是不允许从后台线程进行的,然后应以某种方式进行更改。

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

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