EDIT : Diese Frage ist kein Duplikat als
- Vor ein paar Tagen wurde ein AOSP-Commit für die Abschreibung durchgeführt.
- Die andere Frage betrifft die Verwendung von AsyncTaskLoader über AsyncTask.
Google lehnt die Android AsyncTask-API in Android 11 ab und schlägt vor, sie java.util.concurrentstattdessen zu verwenden . Sie können das Commit hier überprüfen
*
* @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> {
Wenn Sie eine ältere Codebasis mit asynchronen Aufgaben in Android verwalten, müssen Sie diese wahrscheinlich in Zukunft ändern. Meine Frage ist, was der richtige Ersatz für das unten gezeigte Code-Snippet sein soll java.util.concurrent. Es ist eine statische innere Klasse einer Aktivität. Ich suche etwas, mit dem ich arbeiten kannminSdkVersion 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) ;
}
}
AsyncTaskkann nicht entfernt werden, ohne die Abwärtskompatibilität zu beeinträchtigen.