на андроид 4 валится на new Socket
на андроид 4 валится на new Socket
В предыдущих версиях работало все отлично, как обновился до 4 версии стало вылетать приложение на строке:
s = new Socket(host, port);
Что может быть?
s = new Socket(host, port);
Что может быть?
Re: на андроид 4 валится на new Socket
и что с одной строки можно понять?
чисто пальцем в небо - может такая быть хрень что если такое дело делаешь в главном потоке то приложение сразу fail (то ли с 3 то ли с 4-го дроида такая фича).
З.Ы. хотя индусы как то умудрились обрабатывать http запросы в главном потоке
чисто пальцем в небо - может такая быть хрень что если такое дело делаешь в главном потоке то приложение сразу fail (то ли с 3 то ли с 4-го дроида такая фича).
З.Ы. хотя индусы как то умудрились обрабатывать http запросы в главном потоке
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: на андроид 4 валится на new Socket
С третьей версии запрещено в главном потоке делать запросы. Но вот ведь беда, а свои то классы ака android.не_помню.Geocoder , который отвечает за геокодинг координат, может работать с основного потока =)
Re: на андроид 4 валится на new Socket
Подскажите как запустить в другом потоке. По нажатию кнопки создаю соединение:
ServerConnect = new ServerConnect(Server, Port);
в классе ServerConnect:
ServerConnect = new ServerConnect(Server, Port);
в классе ServerConnect:
Код: Выделить всё
public ServerConnect(String host, int port) {
try {
// создаем сокет
s = new Socket(host, port);
socketReader = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));
socketWriter = new BufferedWriter(new OutputStreamWriter(s.getOutputStream(), "UTF-8"));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Re: на андроид 4 валится на new Socket
Михаил в предоставленных автором сайта есть уроки где затрагивается тема о потоках (AsuncTask, Handler), так что дерзай =)
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: на андроид 4 валится на new Socket
А почему не использовать класс Thread ??
Создаем новый поток и стартуем его..
Создаем новый поток и стартуем его..
Re: на андроид 4 валится на new Socket
Ок, почитаю. Просто разобраться нужно как всегда быстро, а что читать сразу и не сообразишь =)rezak90 писал(а):Михаил в предоставленных автором сайта есть уроки где затрагивается тема о потоках (AsuncTask, Handler), так что дерзай =)
Re: на андроид 4 валится на new Socket
Глянул Thread. Используется конструкция типа new Thread(....).start()k.chaiko писал(а):А почему не использовать класс Thread ??
Создаем новый поток и стартуем его..
а как при этом получить экземляр класса, который запускаю в моем примере ServerConnect = new ServerConnect(Server, Port)?
Re: на андроид 4 валится на new Socket
Вы инициализируете ServerConnect по средствам конструктора, я правильно понял ??Михаил писал(а):Глянул Thread. Используется конструкция типа new Thread(....).start()k.chaiko писал(а):А почему не использовать класс Thread ??
Создаем новый поток и стартуем его..
а как при этом получить экземляр класса, который запускаю в моем примере ServerConnect = new ServerConnect(Server, Port)?
Хм..Сейчас немного занят работой конечно, на первую вскидку, можно попробывать сделать объект serverConnect глобальной переменной и просто проводить его инициализацию в новом потоке(Runnable, Thread, Handler)? хотя мб это и плохое решение, тогда нужно подумать будет..а может кто предложит вариант по красивее ещё..
Re: на андроид 4 валится на new Socket
Да. Делаю инициализацию, а потом в программе использую еще методы ServerConnect.k.chaiko писал(а): Вы инициализируете ServerConnect по средствам конструктора, я правильно понял ?
у меня стоит public static ServerConnect ServerConnect; в том классе из которого вызываю ServerConnect = new ServerConnect(Server, Port);k.chaiko писал(а): можно попробывать сделать объект serverConnect глобальной переменной
Re: на андроид 4 валится на new Socket
Сделал так:
Все заработало. Всем спасибо
Код: Выделить всё
Thread t = new Thread(new Runnable() {
public void run() {
String Server = etServer.getText().toString();
int Port = Integer.parseInt(etPort.getText().toString());
ServerConnect = new ServerConnect(Server, Port);
ServerConnect.Send("Hello server!");
}
});
t.start();