gpt4 book ai didi

java - 从互联网获取数据时保持 UI 响应,替代 Handler postDelayed

转载 作者:行者123 更新时间:2023-12-01 19:25:31 29 4
gpt4 key购买 nike

我有一个从互联网获取的 ArrayList。现在我正在使用 Handler postdelayed 执行列表检索。就像下面在 Activity 的 onCreate 中一样。

new Handler().postDelayed(new Runnable() {
@Override
public void run() {

lis_dat.remove(lis_dat.size() - 1);
if (gri_not_lis) {
rv_3r_ada.notifyItemRemoved(lis_dat.size());
} else {
rv_3r_2c_ada.notifyItemRemoved(lis_dat.size());
}
List<String> lis_of_dat;
int cou = 0, pos = lis_dat.size();
String gen_sta, gen_end, gen_mon;
if (yea) {
String[] mon_sym = new DateFormatSymbols().getMonths();
lis_of_dat = Arrays.asList(mon_sym);
} else {
int how_man;
if (lis_is_new) {
how_man = 500;
} else {
how_man = 15;
}
if (day_in_bet(sta, end) <= how_man) {
gen_sta = sta;
gen_end = end;
} else {
gen_sta = sta;
Calendar cal = Calendar.getInstance();
cal.setTime(db_han.con_dat(sta));
cal.add(Calendar.DATE, how_man);
gen_end = USE_DAT.format(cal.getTime());
}
lis_of_dat = gen_dat_in_bet(gen_sta, gen_end);
}
for (String dat : lis_of_dat) {
if (yea) {
Date date = get_mon_dat(dat, YEA.format(db_han.con_dat(sta)));
gen_sta = get_mon_fir_or_las_dat(date, true);
gen_end = get_mon_fir_or_las_dat(date, false);
gen_mon = dat;
} else {
gen_sta = dat;
gen_end = null;
gen_mon = mon;
}
add_to_lis(gen_sta, gen_end, gen_mon, pos, gri_not_lis);
pos++;
}
pos_f[0] = pos;
cou_f[0] = cou;
is_loa = false;
}

}, 1000);

现在我的问题是这里的 1000 毫秒在不同的设备中可能会有所不同。 UI 将保持卡住状态。那么还有什么选择呢?我如何才能等到 UI 加载完成然后再进行检索,而不是等待 1 秒?

我可以使用 AsyncTask,但即使我转到另一个 Activity ,任务也会保持运行直到任务完成。但我不需要在调用 onPause 后运行任务。那么我该怎么做呢?

最佳答案

您可以使用在单独线程中运行的 AsyncTask,保持 UI 响应。可以在Activity的onPause中通过调用 **asyncTaskRunner.cancel(true) **

来取消
private class AsyncTaskRunner extends AsyncTask<String, String, String> {

private String resp;
ProgressDialog progressDialog;

@Override
protected String doInBackground(String... params) {

return resp;
}


@Override
protected void onPostExecute(String result) {

}


@Override
protected void onPreExecute() {

}


@Override
protected void onProgressUpdate(String... text) {


}
}

关于java - 从互联网获取数据时保持 UI 响应,替代 Handler postDelayed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59316500/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com