java - 繁重工作的 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 的工作,或者你能建议我一个示例替代方案,比如可能使用处理程序左右。
解决方案
我认为您正在从“ get_con_fro_sta_to_end() ”方法更改接口......后台线程不允许这样做,然后应该以某种方式进行更改。
每次从“ doInBackground() ”调用“ publishProgress()”时, AsyncTasks 都有“ void onProgressUpdate() ”用于在 UiThread/MainThread 中执行代码。
DoInBackground() 不应触摸界面,而应使用“ onPostExecute() ”(在 UiThread/MainThread 中运行代码)准备要显示的数据/事物
推荐阅读
- matlab - 多次使用 polyval 函数的性能改进
- powershell-2.0 - Sparx Enterprise 架构师使用 powershell 创建基线
- web-services - Google App Engine 上是否有可用于 Node.js 的最流行(微)服务的列表?
- bash - 制作一个 bash 脚本来更新/下载 github 工具
- json - 动态使用带有树的面包屑 SAPUI
- python - 区分消息python3 tcp套接字
- spring - Hadoop HBase 的 Spring
- trustpilot - 在开发环境中没有来自api的响应,但在生产环境中工作
- java - 泽西依赖项中的冲突
- asp.net - 当我尝试使用 asp.net 核心的 signalR 库从集线器的客户端方法中发布事件时出错