EDIT : Câu hỏi này không phải là một bản sao
- Chỉ vài ngày trở lại AOSP cam kết về khấu hao đã được thực hiện.
- Câu hỏi khác là về việc sử dụng AsyncTaskLoader trên AsyncTask.
Google đang phản đối API AsyncTask của Android trong Android 11 và đề nghị sử dụng java.util.concurrentthay thế. bạn có thể kiểm tra cam kết ở đây
*
* @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> {
Nếu bạn đang duy trì một cơ sở mã cũ hơn với các tác vụ không đồng bộ trong Android, bạn có thể sẽ phải thay đổi nó trong tương lai. Câu hỏi của tôi là những gì nên được thay thế phù hợp của đoạn mã được hiển thị dưới đây bằng cách sử dụng java.util.concurrent. Nó là một lớp bên trong tĩnh của một Hoạt động. Tôi đang tìm kiếm một cái gì đó sẽ làm việc vớiminSdkVersion 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) ;
}
}
AsyncTaskkhông thể được loại bỏ mà không phá vỡ tính tương thích ngược.