谷歌不建议在Android 11中使用Android AsyncTask API,而建议使用java.util.concurrent
.您可以查看提交here
*
* @deprecated Use the standard <code>java.util.concurrent</code> or
* <a href="https://developer.android.com/topic/libraries/architecture/coroutines">
* Kotlin concurrency utilities</a> instead.
*/
@Deprecated
public abstract class AsyncTask<Params, Progress, Result> {
如果你在Android中使用异步任务维护一个较旧的代码库,那么你将来可能不得不对其进行更改.我的问题是,用java.util.concurrent
替换下面显示的代码段应该是什么.它是一个活动的静态内部类.我正在寻找能与minSdkVersion 16
一起工作的东西
private static class LongRunningTask extends AsyncTask<String, Void, MyPojo> {
private static final String TAG = MyActivity.LongRunningTask.class.getSimpleName();
private WeakReference<MyActivity> activityReference;
LongRunningTask(MyActivity context) {
activityReference = new WeakReference<>(context);
}
@Override
protected MyPojo doInBackground(String... params) {
// Some long running task
}
@Override
protected void onPostExecute(MyPojo data) {
MyActivity activity = activityReference.get();
activity.progressBar.setVisibility(View.GONE);
populateData(activity, data) ;
}
}