mars出现太多ANR问题,怎么排查和优化

xinuser 1天前 27

出现了太多ANR问题,导致app拉取消息和操作卡顿,为什么会这样呢,一般是什么原因造成的,怎么排查和优化呢

上传的附件:
最新回复 (7)
  • x86 1天前
    引用 2

    用我们最新 demo 测试下呢?

    chatManager 里面的方法大部分都是直接在主线程发起,但是我们上层在用的时候,会进行线程切换,类似下面这种:

    // ConversationViewModel.java
    
        // 包含不存储类型消息
        public MutableLiveData<List<UiMessage>> loadOldMessages(Conversation conversation, String withUser, long fromMessageId, long fromMessageUid, int count, boolean enableLoadRemoteMessageWhenNoMoreLocalOldMessage) {
            MutableLiveData<List<UiMessage>> result = new MutableLiveData<>();
            ChatManager.Instance().getWorkHandler().post(() -> {
                ChatManager.Instance().getMessages(conversation, fromMessageId, true, count, withUser, new GetMessageCallback() {
                    @Override
                    public void onSuccess(List<Message> messageList, boolean hasMore) {
                ....
    
  • xinuser 1天前
    引用 3
    代码就是基于demo的开发的,不可能自己重写的啊
  • xinuser 1天前
    引用 4
    如果im-server响应慢,app从im-server拉取消息或收发消息自然也会慢,这种情况下会造成app卡顿吗,从而引起ANR问题吗?
  • x86 1天前
    引用 5
    xinuser 如果im-server响应慢,app从im-server拉取消息或收发消息自然也会慢,这种情况下会造成app卡顿吗,从而引起ANR问题吗?
    不会,上面那些接口都是从本地拉取数据。
  • x86 1天前
    引用 6
    xinuser 代码就是基于demo的开发的,不可能自己重写的啊
    如 2 楼所说,demo 上,用这些接口的地方都有切换线程的,不会出现主线程 ANR 的情况。你查下你们这些接口是怎么用的,如果直接调用的话,在比较弱、或负载比较高的设备上,是可能出现。
  • xinuser 1天前
    引用 7
    消息先要同步到app,app才能从本地缓存拉取消息吧

    那为什么会出现这么多ANR问题呢,都是底层的mars库提示的
  • xinuser 1天前
    引用 8
    这样啊,我先看看
返回