Size: a a a

StartAndroid Ru Chat

2020 September 04

J

Jerzy (Юра)🎄 in StartAndroid Ru Chat
Denis Koval
а в котлине id = bnv
Я пробовал на прямую обращаться к bnv, но в этом случае ошибка вылетает. Этот же код просто не работает
источник

DK

Denis Koval in StartAndroid Ru Chat
D. P.
Всем здрасте.
Я тут пытаюсь понять как выяснить что за ошибка с подробностями.

У меня километры логов, если брать всё подряд.
И извещение от моего обработчика о том, что класс ошибки: `
android.os.NetworkOnMainThreadException`

При этом getMessage() кажет хрен и я долго там ловил NPE пока не понял, что нет его, сообщения.

А по сюжету я пытаюсь подключиться к RabbitMQ и на этапе подключения ловлю вот это выше.

Код:

public ChatAbstract() {
       factory = new ConnectionFactory();
       Log.d( logTag, "инициализация " + userName + "@" + hostName + "/" + virtualHost  );
       factory.setHost(hostName);
       factory.setPort(portNumber);
       factory.setUsername(userName);
       factory.setPassword(password);
       factory.setVirtualHost(virtualHost);
       factory.setAutomaticRecoveryEnabled(true);
       //factory.setSaslConfig();

       Log.d( logTag, "попытка подключения" );
       try {
           conn = factory.newConnection("android-client");
           Log.d(logTag, "создаю канал");
           chan = conn.createChannel();
           Log.d(logTag, "объявляю обменник");
           chan.exchangeDeclare(exchangeName, "topic", true);
           Log.d(logTag, "объявляю очередь");
           queueName = chan.queueDeclare().getQueue();
           Log.d(logTag, "привинчиваю пересылку сообщений");
           chan.queueBind(queueName, exchangeName, ROUTING_KEY);
       }catch(IOException e){
           Log.d( logTag, "Ошибка подключения: " + Objects.requireNonNull( e.getMessage() ) );
       }catch(TimeoutException e1){
           Log.d( logTag, "Не смог дождаться подключения: " + Objects.requireNonNull( e1.getMessage() ));
       }
   }
NetworkOnMainThreadException
значит что ты обращаешься к ресурсу и графического потока, обратись через другой поток
источник

DP

D. P. in StartAndroid Ru Chat
Denis Koval
NetworkOnMainThreadException
значит что ты обращаешься к ресурсу и графического потока, обратись через другой поток
Вот спасибо!
источник

DK

Denis Koval in StartAndroid Ru Chat
Jerzy (Юра)🎄
Я пробовал на прямую обращаться к bnv, но в этом случае ошибка вылетает. Этот же код просто не работает
ошибка наверное nullPointer
источник

DK

Denis Koval in StartAndroid Ru Chat
а это может быть потому что такого view с таким id не существует
источник

DK

Denis Koval in StartAndroid Ru Chat
поставь Log.d(...) или точку остановы и пройдись отладкой
источник

DP

D. P. in StartAndroid Ru Chat
Denis Koval
NetworkOnMainThreadException
значит что ты обращаешься к ресурсу и графического потока, обратись через другой поток
Так, а я вообще-то создаю Service и пытаюсь подключиться там, это ничего?
     

public class ChatService extends Service {
...
 public int onStartCommand(Intent intent, int flags, int startId){
   startListeners();
 }
...
 void startListeners(){
   try{ receiver  = new ChatReceiver(); }
   catch(IOException и другие){ Log.d() }
   catch(Exception){ /* вот тут вылазит */ }
 }
}
источник

DP

D. P. in StartAndroid Ru Chat
То есть всё равно внутри Service надо посоздавать Thread?
источник

DP

D. P. in StartAndroid Ru Chat
Или надо создать Thread в MainActivity и в новом потоке вызывать?
startService( new Intent( this, ChatService.class ) );
источник

DK

Denis Koval in StartAndroid Ru Chat
D. P.
Так, а я вообще-то создаю Service и пытаюсь подключиться там, это ничего?
     

public class ChatService extends Service {
...
 public int onStartCommand(Intent intent, int flags, int startId){
   startListeners();
 }
...
 void startListeners(){
   try{ receiver  = new ChatReceiver(); }
   catch(IOException и другие){ Log.d() }
   catch(Exception){ /* вот тут вылазит */ }
 }
}
Если твой класс наслледуется от Service, то он будет работать в том потоке, с которого был запущен. Лучше используй тогда IntentService.
источник

DP

D. P. in StartAndroid Ru Chat
Ага, понял, спасибо.
источник

DK

Denis Koval in StartAndroid Ru Chat
источник

DK

Denis Koval in StartAndroid Ru Chat
с API 30 уже deprecated оказывается...
надо теперь юзать JobIntentService
источник

И

Илья in StartAndroid Ru Chat
Ребят, у кого нибудь были такие приколы с эмулятором, не отображаются иконки и проблемы с drawable в прилах?) как починить?)
источник

DP

D. P. in StartAndroid Ru Chat
Да, вот смотрю, что JobIntent.
источник

DP

D. P. in StartAndroid Ru Chat
А как вообще правильно держать фоновое соединение постоянно?
источник

DP

D. P. in StartAndroid Ru Chat
Мало того, JobIntentService тоже уже устарело и предлагается переехать на androidx.
источник

ДД

Дмитрий Д. in StartAndroid Ru Chat
Илья
Ребят, у кого нибудь были такие приколы с эмулятором, не отображаются иконки и проблемы с drawable в прилах?) как починить?)
дело в иконке round которая
источник

СС

Слава Слава... in StartAndroid Ru Chat
Нормально ли вызывать метод в внутри самого себя?
источник

V

Vladushka in StartAndroid Ru Chat
Это рекурсия ))
источник