У меня есть приложение, которое связывается с сервером во время сокетов .Сначала я сделал это:
val sock = Socket("192.168.1.108", 5000)
, и приложение упало из-за ошибки: «android.os.NetworkOnMainThreadException», я прочитал об этом и нашел решение для этой ошибки, и решение заключается в созданииsyncTask как внутренний класс, и это то, что я сделал:
class randomChat : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.chat_show)
HandleServer().execute()
}
inner class HandleServer: AsyncTask<String, String, String>() {
override fun doInBackground(vararg p0: String?): String {
val sock = Socket("192.168.1.108", 5000)
sock.getInputStream()
sock.use {
it.outputStream.write("hello socket world".toByteArray())
}
return "Good"
}
}
}
, и это исправило ошибку, но не устранило мои потребности ... в основном, мои потребности должны иметь преобразование между сервером ипользователь, который использует приложение, у него будет представление editText и кнопка для отправки данных на сервер, а также textView, которые всегда меняются в зависимости от данных сервера.
Итак: что мне нужно, это:
- открытый сокет, который все время получает данные с сервера и обновляет представление в действии
- Мне нужно иметь возможность иметь editText в действии, которое пользователь нажимает на негоотправить данные на сервер (с сокетом)
Большое спасибо !!!!!