EDIT : Esta pergunta não é uma duplicata como
- Apenas alguns dias atrás, o comprometimento do AOSP com a depreciação foi feito.
- A outra pergunta é sobre o uso do AsyncTaskLoader sobre o AsyncTask.
O Google está preterindo a API do AsyncTask do Android no Android 11 e sugerindo o uso java.util.concurrent. você pode conferir o commit aqui
*
* @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> {
Se você estiver mantendo uma base de código mais antiga com tarefas assíncronas no Android, provavelmente precisará alterá-la no futuro. Minha pergunta é: o que deve ser a substituição adequada do snippet de código mostrado abaixo usando java.util.concurrent. É uma classe interna estática de uma atividade. Estou à procura de algo que funcione comminSdkVersion 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) ;
}
}
AsyncTasknão pode ser removido sem quebrar a compatibilidade com versões anteriores.