使用 cocos creator 3.5.2 打包android ,然后在游戏内执行 横竖屏切换
调用android 原生方法。
public static void ChangeOrientation(final int ty) {
app.runOnUiThread(new Runnable() {
@Override
public void run() {
if(ty == 0){
//竖屏
Log.d(“a”, “run: SCREEN_ORIENTATION_PORTRAIT”);
app.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
//横屏
Log.d(“a”, “run: SCREEN_ORIENTATION_LANDSCAPE”);
app.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
});
}
在 ts 中 jsb.reflection.callStaticMethod(“com/cocos/game/AppActivity”, “ChangeOrientation”, “(I)V”, 0);
可以正确转动屏幕。但是反复执行横竖屏切换 不超过 10次就会崩溃退出。报错如下:
022-07-12 09:42:59.657 2932-2932/com.zaobei.win88 E/RtgSchedManager: endActivityTransaction: margin state not match
2022-07-12 09:42:59.666 2932-2932/com.zaobei.win88 E/RtgSchedManager: endActivityTransaction: margin state not match
2022-07-12 09:42:59.684 2932-2985/com.zaobei.win88 D/jswrapper: JS: Info: SocketMgr.send: packetId= 2002
2022-07-12 09:42:59.691 2932-2932/com.zaobei.win88 E/RtgSchedManager: endActivityTransaction: margin state not match
另外想请教:Android的执行后不能马上执行,而是要等一段时间才能回调到 onConfigurationChanged
public void onConfigurationChanged(Configuration newConfig) {
SDKWrapper.shared().onConfigurationChanged(newConfig);
super.onConfigurationChanged(newConfig);
if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.i(“aaa”, “onRestoreInstanceState: 此处为竖屏”);
}else if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
Log.i(“aaaa”, “onRestoreInstanceState: 此处为横屏”);
}
}
请问这是什么原因?
44.531 5550-5653/com.zaobei.win88 A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xa6a287a000000173 in tid 5653 (Thread-2), pid 5550 (om.zaobei.win88)