Должен ли я использовать код основной безопасности для запуска обратных вызовов в Android (Kotlin)? ⇐ Android
Должен ли я использовать код основной безопасности для запуска обратных вызовов в Android (Kotlin)?
Я использую сокет для связи с серверной частью и обертываю его во вспомогательный класс ниже. В случае сторонней библиотеки я не знаю, использовала ли она собственные потоки или нет, и следует ли мне использовать какой-то код для обеспечения безопасности потоков?
Пример кода
class ApiSocket(val socketHost: String) { частный lateinit var сокет: Socket частный var _onConnect: MutableList Unit> = mutableListOf() в этом { сокет = IO.socket(socketHost) сокет.он("подключиться") { _onConnect.forEach { it() } } } веселое соединение () { сокет.connect() } fun onConnect(обратный вызов: () -> Unit) { _onConnect += { обратный вызов() } } } В основной деятельности я использую такой код
private val apiSocket: ApiSocket от lazy { ApiSocket(BASE_URL) } переопределить fun onCreate(savedInstanceState: Bundle?) { .... Log.d("DEBUG", Thread.currentThread().name) // MainThread apiSocket.onConnect { Log.d("DEBUG", Thread.currentThread().name) // EventThread runCodeInMainActivityThatCanDoAnything() } и я вижу, что обратный вызов выполняется в EventThread. Должен ли я использовать что-то вроде Coroutine Scope(Dispatchers.Main).launch или runOnUiThread вот так:
class ApiSocket(val socketHost: String) { частный lateinit var сокет: Socket val область = CoroutineScope(Dispatchers.Main) частный var _onConnect: MutableList Unit> = mutableListOf() в этом { сокет = IO.socket(socketHost) сокет.он("подключиться") { объем.запуск { _onConnect.forEach { it() } } } } веселое соединение () { сокет.connect() } fun onConnect(обратный вызов: () -> Unit) { _onConnect += { обратный вызов() } } } Как правильно использовать обратные вызовы из разных библиотек?
Я использую сокет для связи с серверной частью и обертываю его во вспомогательный класс ниже. В случае сторонней библиотеки я не знаю, использовала ли она собственные потоки или нет, и следует ли мне использовать какой-то код для обеспечения безопасности потоков?
Пример кода
class ApiSocket(val socketHost: String) { частный lateinit var сокет: Socket частный var _onConnect: MutableList Unit> = mutableListOf() в этом { сокет = IO.socket(socketHost) сокет.он("подключиться") { _onConnect.forEach { it() } } } веселое соединение () { сокет.connect() } fun onConnect(обратный вызов: () -> Unit) { _onConnect += { обратный вызов() } } } В основной деятельности я использую такой код
private val apiSocket: ApiSocket от lazy { ApiSocket(BASE_URL) } переопределить fun onCreate(savedInstanceState: Bundle?) { .... Log.d("DEBUG", Thread.currentThread().name) // MainThread apiSocket.onConnect { Log.d("DEBUG", Thread.currentThread().name) // EventThread runCodeInMainActivityThatCanDoAnything() } и я вижу, что обратный вызов выполняется в EventThread. Должен ли я использовать что-то вроде Coroutine Scope(Dispatchers.Main).launch или runOnUiThread вот так:
class ApiSocket(val socketHost: String) { частный lateinit var сокет: Socket val область = CoroutineScope(Dispatchers.Main) частный var _onConnect: MutableList Unit> = mutableListOf() в этом { сокет = IO.socket(socketHost) сокет.он("подключиться") { объем.запуск { _onConnect.forEach { it() } } } } веселое соединение () { сокет.connect() } fun onConnect(обратный вызов: () -> Unit) { _onConnect += { обратный вызов() } } } Как правильно использовать обратные вызовы из разных библиотек?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение