編集:この質問は重複ではありません
- 廃止のほんの数日前のAOSPコミットが行われました。
- もう1つの質問は、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) ;
}
}
@ Style-7ではありません。
—
EpicPandaForce
「静的内部クラス」というものはありません。あなたは静的なネストされたクラスを意味します。
—
激怒
AsyncTask下位互換性を壊さずに削除することはできません。