本帖最后由 Lvmodel 于 2013-09-27 15:30:20 编辑

解决方案 »

  1.   

    sharepreference 只保存一条信息,如果断电的话,一般所有的设备都会有备用小电源,可以顶0.1秒左右,完全够你保存数据的。
      

  2.   

    楼主你说,怎么让不获取聊天室以前的消息记录,其实可以通过
    // 聊天室服务将会决定要接受的历史记录数量
    DiscussionHistory history = new DiscussionHistory();
    history.setMaxChars(0);
    但是这样一来就无法获得聊天室离线消息,楼主的意思应该不是这样。
    DelayInformation inf = (DelayInformation) message.getExtension("x", "jabber:x:delay");  
    if(if!=null){//旧消息}
    但是旧消息又分为已经读取的和未读取的,楼主应该是只希望获取旧消息中未读取的。
    我也刚好遇到此问题,可以如下解决
    每个消息都有一个消息id(如:<message id="GSpj0-51" to="admin"/>)
    读取消息信息后保存至本地,下次拉取到旧消息根据此id,如果本地不存在,进行拉取
      

  3.   


    // 聊天室服务将会决定要接受的历史记录数量
    DiscussionHistory history = new DiscussionHistory();
    history.setSince("2014-03-25 12:00:00");
    // 创建聊天室,进入房间后的nickname(昵称)
    try {
    muc.join(Consta.app_xmpp_service_localName, "", history,
    SmackConfiguration.getPacketReplyTimeout());
    这种方式可以取指定时间之后的历史消息 
    通过变通一下即可 取未读历史信息
      

  4.   

    history.setStanza(0);加上这个,可以控制聊天室历史消息的条数