AsyncTask 已被弃用?使用什么方法代替 onPreExecute 和 onPostExecute?

Ana*_*Ana 5 android android-asynctask asynctaskloader android-studio

在我的旧项目中,我使用了 AsyncTask,但它已被弃用,那么我使用什么方法来代替这个呢?如果我们使用线程,则在 AsyncTask 中具有 onbackground、onPreExecute 和 onPostExecute Override 方法,其中本节在线程中调用。有没有什么替代方法。你能给我解决方案吗?

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();

    }
}
Run Code Online (Sandbox Code Playgroud)

bla*_*pps 6

只需使用一个线程。

onPreExecute 代码位于构造函数中。

doInBackground 代码位于 run() 中。

onPostExecute 代码进入 runOnUiThread 的可运行对象的运行中,您可以在 run() 结束时调用该可运行对象。

  • 感谢您的答复。无法理解。你可以发布任何示例代码或修改我上面的代码吗?这对我们有帮助@blackapps (4认同)

zjm*_*jmo 6

这是一个简单的例子,无论如何我也会看看 WorkManager 库:

Executors.newSingleThreadExecutor().execute(() -> {

    Handler mainHandler = new Handler(Looper.getMainLooper());

      //sync calculations

    mainHandler.post(() -> {
      //Update UI
    });

    //other sync calcs.

    mainHandler.post(() -> {
      //Update UI
    });

  });   
Run Code Online (Sandbox Code Playgroud)