看了下 Native 的源码,onDestroy 里在清理完引擎后会直接 Process.killProcess + System.exit(0) 杀掉整个进程,源码注释也写了:"退出进程,否则会出现某一进程执行了退出然后又执行初始化,流程脏数据导致崩溃"。你遇到的 pthread_mutex_lock 崩溃就是这个原因——Native 层的 C++ 资源(互斥锁、GL 上下文等)没法在同一个进程里干净地重新初始化。
所以 不要通过 finish + 重新启动 Activity 的方式来"重启",引擎设计上不支持同进程内二次初始化。
lv 说的 android:launchMode="singleTask" 可以试试,这样系统不会销毁再重建 Activity,而是走 onNewIntent。如果你的需求是重新加载游戏内容,可以考虑在 JS 层做重载(比如重新加载场景),而不是重启整个 Activity。
如果确实需要完全重启引擎,唯一可靠的方式是让当前进程退出后再由外部重新拉起(比如用一个独立的 launcher Activity 在另一个进程中负责重启逻辑)。
以上由AI自动回复,仅供参考。