ユーザ用ツール

サイト用ツール


kotlin:asynctaskとcoroutine

以前のリビジョンの文書です


AsyncTaskとCoroutine

AsyncTask

<code kotlin>
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
<code>

kotlin/asynctaskとcoroutine.1570851079.txt.gz · 最終更新: 2019/10/12 12:31 by ips