美文网首页
阿里云消息队列+dialog 那些坑

阿里云消息队列+dialog 那些坑

作者: 乔艳庆吃饱就睡睡饱就困 | 来源:发表于2017-10-26 14:11 被阅读47次

    最近公司开会决定,app中的消息传递废弃CS架构,改用消息队列, 额 ,一脸懵逼,话不多说,说一下坑吧

    ,因为额,项目经理喜欢弹框的样式,就自己定义了一个弹框样子差不多是这样。

    额 ,假装有一张图 .....

    这个界面要接受消息队列,然后自动给用户弹出来dialog,显示有商家回复你的订单,开始测试的时候没有问题,但是如果用户频繁的取消订单,再下单,就会出现以下问题

    android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@406ab4c8 is not valid; is your activity running?

    what?,is your activity running?,这个是当前的activity,怎么回报这个错误。查了一下资料。

    dialog是需要依附于activity存在的,当activity销毁的时候,如果执行dialog.show 就会以下,

    于是代码改成了

    if(!Activity.this.isFinishing()) {

    dialog.show

    }else{

    Log.d("flag","===========Activity.this.isFinishing()");

    }

    发现不报错了,但是,有的时候会直接走else,activity显示销毁状态,

    检查了以下代码,在onDestory()方法执行的时候,检查了dialog是不是显示,如果显示,让他隐藏,是不是为空,如果不为空,则制空,这些都判断了,最后查阅资料显示,窗体泄露主要是当前的activity,要接收消息队列,不能完全销毁,虽然activity跟windows分离,但是不会完全销毁。

    最后的解决办法是,在其他的activity接收消息队列,通过EnvetBus Post到这个显示dialog的页面。进行显示doalog。

    相关文章

      网友评论

          本文标题:阿里云消息队列+dialog 那些坑

          本文链接:https://www.haomeiwen.com/subject/jpmmextx.html