小米4手机长时间后台唤醒lencloude连接timeout

问题描述:
小米手机4 长时间后台(大概1小时左右)重新唤醒应用,lencloude 所有创建会话连接超时,必须杀死应用重新启动才能正常登录。

附:

/**
* 创建聊天室
*
* @param context
* @param member
* @param forbidden
* @param message
* @param alert
*/
public static void createConversation(final Context context, final Member member, final boolean forbidden, final String message, final int alert) {

    if (AVIMClientHelper.isCreateConversation) {

        final HashMap<String, Object> map = new HashMap<String, Object>();

        ArrayList<Member> list = new ArrayList<Member>();

        ArrayList<String> idList = new ArrayList<String>();

        Member member1 = new Member();

        idList.add(WenWanMiApplication.UID);

        member1.avatar = WenWanMiApplication.AVATAR;

        member1.uid = WenWanMiApplication.UID;

        member1.nickName = WenWanMiApplication.USER_NAME;

        list.add(member1);

        idList.add(member.uid);

        list.add(member);

        map.put(Constants.CONVERSATION_MEMBER, list);

        final String m = ConversationTools.getM(idList);

        AVIMClientHelper.avimClient.getClientStatus(new AVIMClientStatusCallback() {
            @Override
            public void done(AVIMClient.AVIMClientStatus avimClientStatus) {

                if (AVIMClient.AVIMClientStatus.AVIMClientStatusNone.getCode() == avimClientStatus.getCode()) {

                    AVIMClientHelper.avimClient.open(new AVIMClientCallback() {
                        @Override
                        public void done(AVIMClient avimClient, AVIMException e) {

                            Logger.e("AVIMClient open ----> open client");

                            if (avimClient != null) {

                                selectRoomByM(m, member.uid, map, new AVIMConversationCreatedCallback() {
                                    @Override
                                    public void done(AVIMConversation conversation, AVIMException e) {

                                        if (conversation != null) {

                                            conversation.setAttributes(map);

                                            ChatRoomActivity.chatByConversation(context, conversation, forbidden, message, alert);

                                        } else {

                                            CommonUtility.showToast("创建会话失败喽,请您重试!");

                                        }

                                    }
                                });

                            } else {

                                if (e != null) {

                                    Logger.e("error code ---> "+e.getCode());

                                    e.printStackTrace();

                                    CommonUtility.showToast(e.getMessage());

                                }

                            }

                        }
                    });

                } else {

                    Logger.e("create conversation ----------");

                    selectRoomByM(m, member.uid, map, new AVIMConversationCreatedCallback() {
                        @Override
                        public void done(AVIMConversation conversation, AVIMException e) {

                            if (conversation != null) {

                                conversation.setAttributes(map);

                                ChatRoomActivity.chatByConversation(context, conversation, forbidden, message, alert);

                            } else {

                                if (e != null) {

                                    Logger.e("error code ---> "+e.getCode());

                                    e.printStackTrace();

                                }

                                CommonUtility.showToast("创建会话失败喽,请您重试!");

                            }

                        }
                    });

                }

            }
        });

    } else {

        CommonUtility.showToast("创建会话失败喽,请您重试!");

        AVIMClientHelper.newInstance().openAVIMClientWithId(WenWanMiApplication.UID, new AVIMClientCallback() {
            @Override
            public void done(AVIMClient avimClient, AVIMException e) {

                if (e != null) {

                    Logger.e("error code ---> "+e.getCode());

                    e.printStackTrace();

                }

            }
        });

    }

}

private static void selectRoomByM(String m, final String id, final HashMap<String, Object> map,
                                  final AVIMConversationCreatedCallback callback) {

    final ChatManager chatManager = ChatManager.getInstance();

    chatManager.selectRoomByM(m, new AVIMCallBack<Room>() {
        @Override
        public void callBack(Room room) {

            if (room != null) {

                Logger.e("create conversation from conversation id");

                chatManager.fetchConversationWithConversationId(room.getConvid(), callback);

            } else {

                chatManager.fetchConversationWithMember(id, map, callback);

            }

        }

    });

}
1 人赞了这个帖子.