facebook twitter hatena line email

「Android/kotlin/別スレッド」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(別スレッド)
(Task処理(HogeTaskService)だと同期処理された)
 
(同じ利用者による、間の1版が非表示)
行9: 行9:
  
 
==別スレッドで非同期処理==
 
==別スレッドで非同期処理==
以下非同期処理される
+
===以下非同期処理される===
 
<pre>
 
<pre>
 
Thread(object : Runnable {
 
Thread(object : Runnable {
行36: 行36:
 
</pre>
 
</pre>
  
Task処理(HogeTaskService)だと同期処理された。
+
===Task処理(HogeTaskService)だと同期処理される===
 
<pre>
 
<pre>
 
Thread(object : Runnable {
 
Thread(object : Runnable {

2020年4月24日 (金) 10:35時点における最新版

別スレッド

Thread(object : Runnable {
    override fun run() {
          // スレッド処理
    }
}).start()

別スレッドで非同期処理

以下非同期処理される

Thread(object : Runnable {
    override fun run() {
        HogeService().execute()
    }
}).start()
Thread(object : Runnable {
    override fun run() {
        HogeService().execute()
    }
}).start()
internal class HogeService {
    @Synchronized
    fun execute(): Boolean {
        Log.i(TAG, "処理開始")
        Thread.sleep(5000)
        Log.i(TAG, "処理終了")
        return true
    }
    private val TAG = "HogeService"
}

Task処理(HogeTaskService)だと同期処理される

Thread(object : Runnable {
    override fun run() {
        HogeTaskService().execute()
    }
}).start()
Thread(object : Runnable {
    override fun run() {
        HogeTaskService().execute()
    }
}).start()


internal class HogeTaskService : AsyncTask<Void, Void, Boolean>() {
    @Synchronized
    override fun doInBackground(vararg params: Void?): Boolean {
        Log.i(TAG, "処理開始")
        //Thread.sleep(5000)
        Log.i(TAG, "処理終了")
        return true
    }
    override fun onPostExecute(result: Boolean) {
    }
    companion object {
        private val TAG = "HogeService"
    }
}