APP端 weex中多个JS页面使用GlobalEvent事件有的页面执行有的页面不执行

APP端 weex中多个JS页面使用GlobalEvent事件有的页面执行有的页面不执行

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        try{
            if(requestCode==9999){
                Map<String,Object> params=new HashMap<>();
                params.put("load_device_list", "ok");
                mWXSDKInstance.fireGlobalEventCallback("app_device_status", params);
            }
        }
        catch (Exception e){
            Toast.makeText(mWXSDKInstance.getContext(),e.getMessage().toString(),Toast.LENGTH_LONG).show();
        }
    }

断点调试已经执行了,但是前台js页面没有任何反应

android 端用定时推送也没有效果

  TimerTask task = new TimerTask(){
            public void run(){

                Map<String,Object> params=new HashMap<>();
                params.put("load_device_list","ok");
                mWXSDKInstance.fireGlobalEventCallback("app_device_status", params);

                       /* Message message = new Message();
                        message.what = 3;
                        handler.sendMessage(message);
                        isNewDevice=false;*/
            }
        };
        Timer timer = new Timer();
        timer.schedule(task, 9000);
阅读 5k
3 个回答

不知道是不是我没理解到,这个‘GlobalEvent‘是页面级别的全局,不是应用的全局。
哪个页面发,哪个页面对应的weex实例才能接收

GlobalEvent是实例级的,不是应用级的。只有mWXSDKInstance这个实例能收到。但是可以遍历所有实例,都发送event,代码如下

public void fireSuperEventCallback(String eventName, Map<String, Object> params) {
        List<WXSDKInstance> instances = WXSDKManager.getInstance().getWXRenderManager().getAllInstances();
        for (WXSDKInstance instance : instances) {
            instance.fireGlobalEventCallback(eventName, params);
        }
    }

在android端代码用定时器推送,也没有效果

TimerTask task = new TimerTask(){

        public void run(){

            Map<String,Object> params=new HashMap<>();
            params.put("load_device_list","ok");
            mWXSDKInstance.fireGlobalEventCallback("app_device_status", params);
        }
    };
    Timer timer = new Timer();
    timer.schedule(task, 9000);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进