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
button.setOnClickListener { text.text="Pre" GlobalScope.launch(){ for(i in 1..10){ delay(800) text.text="coroutine:(${i}) ${Thread.currentThread().name}" // ここからは画面を編集できないと思ったけどできた。。。何故? } } text.text="End" }