Android 11 AsyncTask 非推奨 (Kotlin)
Android 11でAsyncTaskが非推奨になりました。
なので、java.util.concurrentのExecutorを使って書き換えました。
Asyncタスクを使った例:
private class TestAsyncTask : AsyncTask<Void, Void, Int>() {
override fun onPreExecute() {
super.onPreExecute()
// 前処理
}
override fun doInBackground(vararg p0: Void): Int {
// バックグラウンド処理
return 0
}
override fun onPostExecute(response: Int) {
super.onPostExecute(response)
// 後処理
}
}
呼び出し側:
val testAsyncTask = TestAsyncTask()
testAsyncTask.execute()
Executorを使用した例:
private class TestRunnable(val onPostExecute:(Int) -> Unit) : Runnable {
val handler = Handler(Looper.getMainLooper())
override fun run() {
// メイン処理
// 後処理実行
handler.post(Runnable {
onPostExecute(1001)
})
}
}
private class TestAsyncTask {
fun onPreExecute() {
// 前処理}
fun execute() {
onPreExecute()
val executorService : ExecutorService = Executors.newSingleThreadExecutor()
executorService.submit(TestRunnable(context, ::onPostExecute)) }
fun onPostExecute(response: Int) {
// 後処理
}
}
呼び出し側:
val testAsyncTask = TestAsyncTask()
testAsyncTask.execute()