2014-04-21 3 views
0

나는 3 가지 활동을 만들었습니다. 먼저 details.After 로그인이 내가 뭔가에 messageactivity에 3 활동을 점프 목록보기에서 접촉을 선택하는 listview.After에있는 사람의 연락처를 표시하는 데 사용 displayactivity로 이동 성공적인입니다 로그인 확인 loginactivity입니다 2 명의 사용자 간 채팅을 표시합니다. 이제 내 질문은 어디서 어떻게 구현합니까 messageListener 그래서 다른 사용자로부터받은 메시지를 보여줄 수 있습니다 messageactivity 특정 사용자의?xmpp asmack에서 메시지 수신기를 구현하는 방법은 무엇입니까?

+0

특정 목록보기 항목을 클릭하면 messageactivity로 이동합니다. – Amardeepvijay

+0

예, 그게 무슨 일을하고 있는지는 모르지만 messageactivity 또는 displayactivity에서 리스너를 구현해야합니다. 서비스 또는 처리기를 사용하여 구현해야합니다. – Rider

답변

4

개별 Chats에 대해 MessageListeners 대신 XMPPConnection에서 PacketListener를 사용하는 것이 좋습니다. 이 리스너를 통해 (필터에 의해 지정된 유형의 채팅, 대부분 채팅) 모든 메시지를 수신 한 다음 채팅중인 사람이든 다른 사람이든 원하는대로 할 수 있습니다. 이 같은

뭔가이와 함께

PacketFilter filter = new MessageTypeFilter(Message.Type.chat); 
connection.addPacketListener(new PacketListener() 
{ 
    public void processPacket(Packet packet) 
    { 
     Message message = (Message) packet; 
     String body = message.getBody(); 
     String from = message.getFrom(); 
    } 
}, filter); 

당신은 아마 SendMessage 대신 sendPacket를 사용해야하지만 거의 동일합니다, 당신은 개별 채팅 인스턴스에 대해 걱정할 필요가 없습니다. 나는 그것이 그 목적에 봉사하기를 바랍니다.

+0

서비스 또는 스레드를 사용하거나 다른 방법을 사용하여이 수신기를 구현해야합니까? – Rider

+1

청취자는 이미 고유 스레드를 가지고 있습니다. XMPPConnection을 응용 프로그램에 전역으로 설정하여 현재 어떤 활동에 관계없이 항상 연결을 끊을 때까지 활성 상태로 유지해야합니다. 정적 XMPPConnection 개체가있는 클래스를 만들고 각 활동은 해당 클래스를 통해 해당 XMPPConnection을 사용할 수 있습니다. 희망이 도움이됩니다! – dbar

+0

청취자를 사용하여 메시지를받을 때 UI에서 어떻게 표시 할 수 있는지 마지막으로 말해주십시오. 여기서 브로드 캐스트를 사용할 수 있습니까? 미리 감사드립니다. – Rider

관련 문제