Как создать клиент XMPP Chat в Android с Openfire?

Я новичок в Android. Я хотел создать чат-клиент XMPP вместе с push-уведомлениями. Я установил openfire, и сервер готов к тестированию на моей локальной машине.

На данный момент, что я делаю 1. Создание XMPP-соединения в задаче ASYNC 2. onPost создание менеджера чата

protected void onPostExecute(final Boolean success) {
        if (success) {
            if (connection != null) {
                chatManager = connection.getChatManager();
                Chat newChat = chatManager.createChat("shobhit",
                         new MessageListener() {
                            public void processMessage(Chat chat, Message message) {
//Do something
                            }
                        });
            }
        }
    }

Но я совершенно запутался, если я делаю это правильно. Я где-то читал на stackru, что ASYNC следует использовать только для небольших операций, и мое соединение может быть отсрочено здесь.

Я также нашел их в качестве вероятных решений: Runnable, Обработчики Создать приемники службы вещания

Я не уверен, какой метод я должен выбрать. Не могли бы вы, ребята, предложить оптимальный метод и указатели на пример того, что было бы здорово?

Спасибо четан

2 ответа

Как вы сказали, ASYNC следует использовать только для небольшой активности. Предполагая, что вы используете какую-то версию Asmack в Android, соединение должно быть в отдельном потоке от действия (как сетевой процесс), поэтому вы должны использовать новый поток /runnable для соединения с сервером XMPP. После этого Asmack использует свои собственные потоки, но вам не стоит об этом беспокоиться. С помощью этого шаблона вы можете создать простое приложение, которое может быть убито в любое время Android. Если вы хотите, чтобы что-то долго сопротивлялось, вы должны использовать службу для части XMPP

Используйте AsynTask для создания соединения. В android все задачи, связанные с сетью, должны отличаться от потока пользовательского интерфейса, поэтому вызовите его из метода doInBackground(). Если вы хотите сохранить соединение в течение длительного времени, включите его в эксплуатацию.

Другие вопросы по тегам