【发布时间】:2021-02-23 09:35:26
【问题描述】:
在我的旧项目中,我使用了 AsyncTask,但它已被弃用,所以我用什么方法代替了这个? 如果我们使用线程,在 AsyncTask 中具有 onbackground、onPreExecute 和 onPostExecute 覆盖方法,这些部分在线程中调用。有没有替代方法。能给我解决办法吗?
Java 代码:
public class getDetailsfromWeb extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
if (paymentSync == null)
paymentSync = new ReceivePaymentSync(getActivity());
allCreditCardModel = new AllCreditCardModel();
allCreditCardModel = paymentSync.getGetCreditCardById(CrediCardId);
handler.post(allCreditRunnable);
return null;
}
/**
* @param string
*/
public void execute(String string) {
// TODO Auto-generated method stub
}
protected void onPreExecute() {
showProgress();
}
@Override
protected void onPostExecute(String result) {
progress.dismiss();
}
}
【问题讨论】:
-
我前几天回答过类似的问题stackoverflow.com/a/64619184/14507326
-
@zjmo 在“长时间运行的操作”中我们粘贴 doInBackground 代码和“在主线程上更新 ui”粘贴 onPreExecute 对吗?
-
那么我们在哪里粘贴 onPostExecute 代码?
-
视情况而定,可能在您的情况下,预执行在主线程上进行,然后如答案所示打开 rmthread,在后台执行繁重的代码,然后将代码从内部发布到主线程后台线程。实际上,您可以根据需要在主线程上发布任意次数。
-
在 kotlin 中使用 RXJava 或协程。
标签: android android-studio android-asynctask asynctaskloader