首页 > 解决方案 > 繁重工作的 Asynctask 替代方案(在 UI 中添加大量片段)

问题描述

我正在获取两个给定日期之间的所有日期,然后为中间的每个日期创建片段。问题是当我使用 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 的工作,或者你能建议我一个示例替代方案,比如可能使用处理程序左右。

标签: javaandroidandroid-asynctaskbackground-task

解决方案


我认为您正在从“ get_con_fro_sta_to_end() ”方法更改接口......后台线程不允许这样做,然后应该以某种方式进行更改。

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

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


推荐阅读