EDIT : Cette question n'est pas un doublon comme
- Il y a quelques jours à peine, l'AOSP s'est engagé sur la dépréciation.
- L'autre question concerne l'utilisation d'AsyncTaskLoader sur AsyncTask.
Google déconseille l'API Android AsyncTask dans Android 11 et suggère de l'utiliser à la java.util.concurrentplace. vous pouvez consulter le commit ici
*
* @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> {
Si vous conservez une base de code plus ancienne avec des tâches asynchrones dans Android, vous devrez probablement la modifier à l'avenir. Ma question est que ce qui devrait être un remplacement correct de l'extrait de code ci-dessous en utilisant java.util.concurrent. Il s'agit d'une classe interne statique d'une activité. Je cherche quelque chose qui fonctionnera avecminSdkVersion 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) ;
}
}
AsyncTaskne peut pas être supprimé sans rompre la compatibilité descendante.