на андроид 4 валится на new Socket

Ответить
Михаил
Сообщения: 14
Зарегистрирован: 27 июл 2012, 10:48

на андроид 4 валится на new Socket

Сообщение Михаил » 02 авг 2012, 15:53

В предыдущих версиях работало все отлично, как обновился до 4 версии стало вылетать приложение на строке:
s = new Socket(host, port);

Что может быть?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: на андроид 4 валится на new Socket

Сообщение rezak90 » 02 авг 2012, 17:10

и что с одной строки можно понять?
чисто пальцем в небо - может такая быть хрень что если такое дело делаешь в главном потоке то приложение сразу fail (то ли с 3 то ли с 4-го дроида такая фича).
З.Ы. хотя индусы как то умудрились обрабатывать http запросы в главном потоке :lol:
R.id.team
Политика на форуме запрещена

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: на андроид 4 валится на new Socket

Сообщение Mikhail_dev » 02 авг 2012, 19:20

С третьей версии запрещено в главном потоке делать запросы. Но вот ведь беда, а свои то классы ака android.не_помню.Geocoder , который отвечает за геокодинг координат, может работать с основного потока =)

Михаил
Сообщения: 14
Зарегистрирован: 27 июл 2012, 10:48

Re: на андроид 4 валится на new Socket

Сообщение Михаил » 03 авг 2012, 09:02

Подскажите как запустить в другом потоке. По нажатию кнопки создаю соединение:
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();
		}
	
	}

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: на андроид 4 валится на new Socket

Сообщение rezak90 » 03 авг 2012, 11:36

Михаил в предоставленных автором сайта есть уроки где затрагивается тема о потоках (AsuncTask, Handler), так что дерзай =)
R.id.team
Политика на форуме запрещена

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: на андроид 4 валится на new Socket

Сообщение Finch » 03 авг 2012, 11:37

CEO of a company R.id.team

k.chaiko
Сообщения: 21
Зарегистрирован: 02 авг 2012, 17:23

Re: на андроид 4 валится на new Socket

Сообщение k.chaiko » 03 авг 2012, 11:38

А почему не использовать класс Thread ??
Создаем новый поток и стартуем его..

Михаил
Сообщения: 14
Зарегистрирован: 27 июл 2012, 10:48

Re: на андроид 4 валится на new Socket

Сообщение Михаил » 03 авг 2012, 11:47

rezak90 писал(а):Михаил в предоставленных автором сайта есть уроки где затрагивается тема о потоках (AsuncTask, Handler), так что дерзай =)
Ок, почитаю. Просто разобраться нужно как всегда быстро, а что читать сразу и не сообразишь =)

Михаил
Сообщения: 14
Зарегистрирован: 27 июл 2012, 10:48

Re: на андроид 4 валится на new Socket

Сообщение Михаил » 03 авг 2012, 11:56

k.chaiko писал(а):А почему не использовать класс Thread ??
Создаем новый поток и стартуем его..
Глянул Thread. Используется конструкция типа new Thread(....).start()

а как при этом получить экземляр класса, который запускаю в моем примере ServerConnect = new ServerConnect(Server, Port)?

k.chaiko
Сообщения: 21
Зарегистрирован: 02 авг 2012, 17:23

Re: на андроид 4 валится на new Socket

Сообщение k.chaiko » 03 авг 2012, 12:06

Михаил писал(а):
k.chaiko писал(а):А почему не использовать класс Thread ??
Создаем новый поток и стартуем его..
Глянул Thread. Используется конструкция типа new Thread(....).start()

а как при этом получить экземляр класса, который запускаю в моем примере ServerConnect = new ServerConnect(Server, Port)?
Вы инициализируете ServerConnect по средствам конструктора, я правильно понял ??
Хм..Сейчас немного занят работой конечно, на первую вскидку, можно попробывать сделать объект serverConnect глобальной переменной и просто проводить его инициализацию в новом потоке(Runnable, Thread, Handler)? хотя мб это и плохое решение, тогда нужно подумать будет..а может кто предложит вариант по красивее ещё..

Михаил
Сообщения: 14
Зарегистрирован: 27 июл 2012, 10:48

Re: на андроид 4 валится на new Socket

Сообщение Михаил » 03 авг 2012, 12:19

k.chaiko писал(а): Вы инициализируете ServerConnect по средствам конструктора, я правильно понял ?
Да. Делаю инициализацию, а потом в программе использую еще методы ServerConnect.

k.chaiko писал(а): можно попробывать сделать объект serverConnect глобальной переменной
у меня стоит public static ServerConnect ServerConnect; в том классе из которого вызываю ServerConnect = new ServerConnect(Server, Port);

Михаил
Сообщения: 14
Зарегистрирован: 27 июл 2012, 10:48

Re: на андроид 4 валится на new Socket

Сообщение Михаил » 03 авг 2012, 15:00

Сделал так:

Код: Выделить всё

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();
Все заработало. Всем спасибо

Ответить