我获取两个给定日期之间的所有日期,然后为之间的每个日期创建片段。问题是当我使用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是否有任何解决方法,或者您能为我推荐一个示例替代方法,例如可能使用处理程序等等。
答案 0 :(得分:0)
我认为您正在通过“ get_con_fro_sta_to_end()”方法更改Interface ...这是不允许从后台线程进行的,然后应以某种方式进行更改。
AsyncTasks具有“ void onProgressUpdate()”,每次从“ publishProgress()”时,AsyncTask都会用于在UiThread / MainThread中执行代码。 > doInBackground()”。
DoInBackground()不应触摸界面,而只是准备要使用“ onPostExecute()”(在UiThread / MainThread中运行代码)显示的数据/事物