如果不使用 onPostExcute,使用 AsyncTask 是否有意义?

Does it make sense to use AsyncTask if onPostExcute is not used?

在我正在查看的代码片段中,使用了扩展 AsyncTask 的私有 class。但是 onPostExecute 方法没有被使用。仅使用 doInBackground 方法,并且在该方法中有一个 POST 请求。我的问题是, AsyncTask 不是为了在完成工作后更新 UI 吗?我的意思是在没有 onPostExecute 的情况下使用它有意义吗?

(不允许我分享代码的任何部分,如果含糊不清,请见谅。)

谢谢。

是的,如果 doInBackground 方法中的代码没有 return 值(仅用于副作用),例如在您的情况下它用于 POST 请求,哪个剂量不是 return 一个值。

根据文档:onPostExecute(Result), invoked on the UI thread after the background computation finishes. The result of the background computation is passed to this step as a parameter.

示例:

class DownloadFilesTask extends AsyncTask<Integer, Void, Void>{
 @Override
 protected Void doInBackground(Integer... integers) {
    //  DO POST REQUEST
     return null;
 }

}

因为 ProgressResult 参数是 Void 你不必覆盖 onPostExecute(Result)方法。

这取决于要执行的任务。您可以在不调用 onPostExecute 的情况下完美地使用 AsyncTask,但如果它既不使用 onProgressUpdate 方法,那么这将意味着错误使用它的目的是在后台线程中执行任务,并在 UI 线程上通知结果, 在 UI 线程上通知进度更新。

因此,如果根本不使用 onPostExecuteonProgressUpdate,那么可能应该替换为 Thread

还要考虑 API 30 中的 AsyncTask class has been deprecated,因此可能是重构此类代码的好时机。