EDIT : Це питання не є дублікатом
- Лише пару днів тому AOSP було здійснено зобов’язання щодо анулювання.
- Інше питання стосується використання AsyncTaskLoader через AsyncTask.
Google знецінює API AsyncTask для Android в Android 11 і пропонує 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їх не можна видалити без порушення сумісності.