HarmonyOS 鸿蒙Next:The specified message queue synchronization barrier token has not been posted or has already been removed.
HarmonyOS 鸿蒙Next:The specified message queue synchronization barrier token has not been posted or has already been removed.
java.lang.IllegalStateException: The specified message queue synchronization barrier token has not been posted or has already been removed. at android.os.MessageQueue.removeSyncBarrier(MessageQueue.java:587) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2160) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8884) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1280) at android.view.Choreographer.doCallbacks(Choreographer.java:1019) at android.view.Choreographer.doFrame(Choreographer.java:911) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1248) at android.os.Handler.handleCallback(Handler.java:900) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
版本:鸿蒙 Android 10
Top 机型:
此问题全在鸿蒙上,华为机型有少量,其他设备并没有此问题,求一波解答
上报上来的确实是 Android 10
线上问题,无具体场景和步骤,问题全在鸿蒙系统上,华为会出现少量,是否在鸿蒙系统上对 message 屏障 有特殊的处理,
您好,请问您解决了吗?最近我也遇到了这个问题。
希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。
请问有结论了吗
同上,华为崩溃的太多了
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
复现了异常场景: 1、dialog、popupwindow等控件,在展示的时候会调用到ViewRootImpl.addView()方法; 2、该方法内部如果出现异常,如依附的Activity销毁、传入的context不是Activity等,会先调用unscheduleTraversals(),然后抛出异常; 3、unscheduleTraversals() 和 doTraversal() 方法里会做移除消息屏障操作,二者都是线程不安全,如果多线程情况,可能会存在同时删除的操作,可以在子线程执行步骤1; 4、try catch住步骤2抛出的异常,会让crash概率增加,但即使不try catch也有可能导致该crash 。 可以看看各自的业务逻辑里是否存在这样的场景。
请问是如何复现的呢?
多线程高并发下,子线程展示dialog或popupwindow,然后try catch住,同时主线程做UI更新操作,这样会导致多线程下同时执行nscheduleTraversals() 和 doTraversal() 方法
是的,在APP的某些场景下复现很高频。无法确认是哪些操作导致的
感谢您的支持和反馈,已反馈业务侧,我们会不断优化,感谢。
能给个结论吗? 到底什么时候能解决?
针对您提到的HarmonyOS 鸿蒙Next系统中的错误:“The specified message queue synchronization barrier token has not been posted or has already been removed”,这通常表明在消息队列处理中遇到了同步屏障令牌问题。此问题可能由以下几种情况引起:
-
令牌未正确发布:在尝试使用同步屏障令牌前,需确保该令牌已被正确创建并发布到消息队列中。
-
令牌被提前移除:如果令牌在使用前被其他线程或操作移除,将导致此错误。
-
多线程竞态条件:在多线程环境中,如果多个线程同时操作同一个消息队列和同步屏障令牌,可能会引发竞态条件,导致令牌状态异常。
-
API使用不当:检查是否按照HarmonyOS的API文档正确使用了同步屏障相关的API。
为了解决这个问题,您可以:
- 仔细审查代码中同步屏障令牌的使用逻辑,确保令牌的正确发布和适时移除。
- 检查多线程环境下的同步机制,避免竞态条件。
- 查阅HarmonyOS的最新文档,确认API的使用方法和限制。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html