addOnReceiveMessageListener收到2次重复消息

guqun 2020-6-29 958

如题,但是是在不同的服务里面接收到的。

一个是在我的app里面,一个是在marsservice里面。

两次接收到消息,导致我逻辑处理了两次,这个问题是什么原因导致的?求答疑?谢谢

最新回复 (12)
  • x86 2020-6-29
    引用 2
    你好,你的业务逻辑,不应当依赖于marsservice。
  • guqun 2020-6-29
    引用 3
    我现在不知道为什么我的业务逻辑会依赖于marsservice,我的处理动作都是在.gChatManager.addOnReceiveMessageListener里面处理的。但是每次都会收到两次消息。
  • guqun 2020-6-30
    引用 4
    x86 你好,你的业务逻辑,不应当依赖于marsservice。
    你好,能答复一下我的问题吗?谢谢
  • x86 2020-6-30
    引用 5
    guqun 我现在不知道为什么我的业务逻辑会依赖于marsservice,我的处理动作都是在.gChatManager.addOnReceiveMessageListener里面处理的。但是每次都会收到两次消息。
    有可能是调用了两次 addOnReceiveMessageListener 吗?
  • guqun 2020-7-1
    引用 6

    addOnReceiveMessageListener调用肯定是只调用了一次,确认发送消息端也只发送了一次。

    日志截图在附件里面,是我自己打印的日志

    上传的附件:
  • guqun 2020-7-2
    引用 7
    x86 有可能是调用了两次 addOnReceiveMessageListener 吗?
    您好,附件的日志能看出什么问题么?
  • guqun 2020-7-6
    引用 8
    ??能答复一下吗
  • x86 2020-7-7
    引用 9
    你好,日志看不出什么问题。

    你可以把两次调用你的代码的调用栈贴出来,我们看下。

    正常情况下,marsservice不会调用你们的业务代码。
  • guqun 2020-7-7
    引用 10
    已经找到原因了,是因为marsservice是独立的进程,导致application被初始化两次,监听就是设置在application里面。导致设置两次监听。
  • x86 2020-7-8
    引用 11
    guqun 已经找到原因了,是因为marsservice是独立的进程,导致application被初始化两次,监听就是设置在application里面。导致设置两次监听。
    你好,demo MyApp.java 里面有,有判断当前是否是应用主进程,当是主进程的时候,才进行野火SDK相关的初始化工作,请问是不是这个地方的问题?

    ```
    public class MyApp extends BaseApp {

        @Override
        public void onCreate() {
            super.onCreate();
            Config.validateConfig();

            // bugly,务必替换为你自己的!!!
            if ("wildfirechat.cn".equals(Config.IM_SERVER_HOST)) {
                CrashReport.initCrashReport(getApplicationContext(), Config.BUGLY_ID, false);
            }
            // 只在主进程初始化
            if (getCurProcessName(this).equals(BuildConfig.APPLICATION_ID)) {
                WfcUIKit wfcUIKit = WfcUIKit.getWfcUIKit();
                wfcUIKit.init(this);
                wfcUIKit.setAppServiceProvider(AppService.Instance());
                PushService.init(this, BuildConfig.APPLICATION_ID);
                MessageViewHolderManager.getInstance().registerMessageViewHolder(LocationMessageContentViewHolder.class);
                setupWFCDirs();
            }
        }
    .....
    }

    ```
  • guqun 2020-7-8
    引用 12
    x86 你好,demo MyApp.java 里面有,有判断当前是否是应用主进程,当是主进程的时候,才进行野火SDK相关的初始化工作,请问是不是这个地方的问题? ``` public class My ...
    就是这个问题,我是参照文档集成的wildfire,没有去看Android demo的源码。这个问题已经解决了,谢谢
  • x86 2020-7-8
    引用 13
    好的,我们在文档上更新下这问题,谢谢。
返回