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