import android.os.AsyncTask
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.i("async","onCreate: ${Thread.currentThread().name}")
button.setOnClickListener {
MyAsyncTask().execute()
}
}
inner class MyAsyncTask:AsyncTask<Void,Int,Void>(){
override fun onPreExecute() {
Log.i("async","onPreExecute: ${Thread.currentThread().name}")
super.onPreExecute()
text.text="onPreExecute"
Thread.sleep(800)
}
override fun doInBackground(vararg p0: Void?): Void? {
Log.i("async","doInBackground: ${Thread.currentThread().name}")
for(i in 1..3){
publishProgress(i)
Thread.sleep(800)
}
return null
}
override fun onProgressUpdate(vararg values: Int?) {
Log.i("async","onProgressUpdate: ${Thread.currentThread().name}")
super.onProgressUpdate(*values)
text.text="onProgressUpdate${values[0]}"
}
override fun onPostExecute(result: Void?) {
Log.i("async","onPostExecute: ${Thread.currentThread().name}")
super.onPostExecute(result)
text.text="onPostExecute!"
}
}
}
↓
アプリ起動
onCreate: main
ボタン クリック
onPreExecute: main
doInBackground: AsyncTask #1
onProgressUpdate: main
onProgressUpdate: main
onProgressUpdate: main
onPostExecute: main