Android 11 AsyncTask 非推奨 (Java)
Android 11でAsyncTaskが非推奨になりました。
なので、java.util.concurrentのExecutorを使って書き換えました。
Asyncタスクを使った例:
public static class AsyncExportProgress extends AsyncTask<Void, Void, String> {
ProgressBar progressBar;
Snackbar snackbar;
@Override
protected void onPreExecute() {
// ここに前処理を記述します
// 例) プログレスダイアログ表示
}
@Override
protected String doInBackground(Void... arg0) {
// バックグラウンド処理
}
@Override
protected void onPostExecute(String result) {
// バックグランド処理終了後の処理をここに記述します
// 例) プログレスダイアログ終了
}
}
呼び出し側:
AsyncExportProgress asyncExportProgress = new AsyncExportProgress();
asyncExportProgress.execute();
Executorを使用した例:
private static class AsyncExportProgress {
ProgressBar progressBar;
Snackbar snackbar;
private class AsyncRunnable implements Runnable {
private String strResult;
Handler handler = new Handler(Looper.getMainLooper());
@Override
public void run() {
// ここにバックグラウンド処理を書く
handler.post(new Runnable() {
@Override
public void run() {
onPostExecute(strResult);
}
});
}
}
void onPreExecute() {
// ここに前処理を記述します
// 例) プログレスダイアログ表示
}
void execute() {
onPreExecute();
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(new AsyncRunnable());
}
void onPostExecute(String result) {
// バックグランド処理終了後の処理をここに記述します
// 例) プログレスダイアログ終了
}
}
呼び出し側:
AsyncExportProgress asyncExportProgress = new AsyncExportProgress();
asyncExportProgress.execute();