「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"
}
}
