#android #sockets #kotlin #android-activity
#Android #сокеты #kotlin #android-активность
Вопрос:
После того, как я проверю правильность входных данных, я привязываю действие к сервису, чтобы отправить ему ip, порт … и начать новое действие. Но я хочу начать действие только после того, как приложение успешно подключится к серверу, иначе нет.
Первое действие
btnConnect.setOnClickListener {
//some checks
//if checks pass
//bind to service
Intent(this, MyService::class.java).also { intent ->
intent.putExtra("ip1", ip1)
intent.putExtra("port1", port1)
bindService(intent, connection, Context.BIND_AUTO_CREATE)
}
// should wait here until connected
//open new activity
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
Соединение в службе
fun startConnection(ip: String, port: Int) {
try {
socket = Socket(ip, port)
//if successful continue below
Комментарии:
1. в чем вопрос?
2. Я хочу начать новую активность при успешном подключении к серверу, а не сразу, как сейчас
Ответ №1:
Как насчет передачи обратного startConnection
вызова методу? Это будет выглядеть примерно так
btnConnect.setOnClickListener {
Intent(this, MyService::class.java).also { intent ->
intent.putExtra("ip1", ip1)
intent.putExtra("port1", port1)
bindService(intent, connection, Context.BIND_AUTO_CREATE)
}
startConnection("localhost", 8080, onConnectionEstablished = {
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
})
}
fun startConnection(ip: String, port: Int, onConnectionEstablished: () -> Unit) {
try {
socket = Socket(ip, port)
onConnectionEstablished()
//stuff