我得到两个给定日期之间的所有日期,然后在两个日期之间创建片段。问题是当我使用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()”方法改变接口......这是不允许从后台线程然后它应该以某种方式改变。
AsyncTasks具有“void onProgressUpdate()”,用于在每次从“doInBackground()”调用“publishProgress()”时执行UiThread / MainThread中的代码。
DoInBackground()不应该触摸接口,而只是准备使用“onPostExecute()”(在UiThread / MainThread中运行代码)显示数据/事物