facebook twitter hatena line email

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

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(別スレッド処理(コールチン))
(別スレッド処理)
行1: 行1:
==別スレッド処理==
+
==別スレッド==
 
<pre>
 
<pre>
 
Thread(object : Runnable {
 
Thread(object : Runnable {
 
     override fun run() {
 
     override fun run() {
        // スレッド処理
+
          // スレッド処理
 
     }
 
     }
 
}).start()
 
}).start()
 +
 +
==別スレッドで非同期処理==
 +
以下非同期処理される
 +
<pre>
 +
Thread(object : Runnable {
 +
    override fun run() {
 +
        HogeService().execute()
 +
    }
 +
}).start()
 +
Thread(object : Runnable {
 +
    override fun run() {
 +
        HogeService().execute()
 +
    }
 +
}).start()
 +
</pre>
 +
 +
<pre>
 +
internal class HogeService {
 +
    @Synchronized
 +
    fun execute(): Boolean {
 +
        Log.i(TAG, "処理開始")
 +
        Thread.sleep(5000)
 +
        Log.i(TAG, "処理終了")
 +
        return true
 +
    }
 +
    private val TAG = "HogeService"
 +
}
 +
</pre>
 +
 +
Task処理(HogeTaskService)だと同期処理された。
 +
<pre>
 +
Thread(object : Runnable {
 +
    override fun run() {
 +
        HogeTaskService().execute()
 +
    }
 +
}).start()
 +
Thread(object : Runnable {
 +
    override fun run() {
 +
        HogeTaskService().execute()
 +
    }
 +
}).start()
 +
</pre>
 +
 +
 +
<pre>
 +
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"
 +
    }
 +
}
 
</pre>
 
</pre>

2020年4月21日 (火) 19:58時点における版

別スレッド

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

==別スレッドで非同期処理==
以下非同期処理される
<pre>
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"
    }
}