편집 :이 질문은 중복되지 않습니다
- 며칠 전 지원 중단에 대한 AOSP 커밋이 완료되었습니다.
- 다른 질문은 AsyncTask보다 AsyncTaskLoader를 사용하는 것입니다.
Google은 Android 11에서 Android AsyncTask API를 더 이상 사용하지 않으며 java.util.concurrent대신 사용할 것을 제안합니다 . 여기서 커밋을 확인할 수 있습니다
*
* @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) ;
}
}
AsyncTask하위 호환성을 유지하지 않으면 제거 할 수 없습니다.