You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity库导致Android应用调用finish()后崩溃

Unity库导致Android应用调用finish()后崩溃

看起来你遇到的是Unity集成Firebase和多人服务后,从Unity Activity返回原生Android Activity时的进程崩溃问题,我之前帮朋友排查过类似的情况,给你几个实用的排查和解决方向:

先帮你梳理下问题细节:

你开发的Android应用会打开Unity项目,Unity里用到了Firebase和Unity多人服务,关闭Unity回到原生Android Activity后,onActivityResult能正常执行,但几秒后应用就崩溃了,Logcat里显示:

unregisterNetworkCallback; CallingUid : 10176, CallingPid : 9103
Sending signal. PID: 9103 SIG: 9

SIG:9这个信号一般是系统强制杀死进程的标志,结合unregisterNetworkCallback的日志,大概率是Unity侧的后台服务(比如Firebase的网络监听、多人服务的网络回调)没正确释放,导致回到原生后,系统处理网络回调注销时出现异常,最终把整个进程杀了。

给你几个具体的解决步骤:

  • 先搞定Unity端的退出前清理:在Unity项目里,一定要在退出前手动终止所有Firebase和多人服务的活跃进程,别等系统被动回收。比如:
    • 针对Firebase:调用FirebaseApp.DefaultInstance.Dispose()释放Firebase实例,同时用RemoveAllListeners()方法注销所有Realtime Database、Auth的状态监听回调。
    • 针对Unity多人服务:主动断开所有房间连接,注销网络回调,比如调用NetworkManager.Shutdown()(如果用的是Unity Netcode for GameObjects),确保所有网络相关资源都被释放。
  • 原生和Unity的退出流程要联动:别在原生端直接调用finish()关闭Unity Activity,先通过UnityPlayer.UnitySendMessage通知Unity做清理,等Unity完成后再通知原生执行退出。举个例子:
    原生Android代码片段:
    // 触发关闭Unity的逻辑时
    UnityPlayer.UnitySendMessage("QuitHandler", "PerformCleanup", "");
    
    Unity里的QuitHandler脚本(挂载在某个活跃GameObject上):
    public void PerformCleanup()
    {
        // 执行Firebase和多人服务的清理逻辑
        FirebaseApp.DefaultInstance.Dispose();
        NetworkManager.Singleton?.Shutdown();
        // 清理完成后,通知原生Activity执行finish
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() => {
            currentActivity.Call("finish");
        }));
    }
    
  • 给Unity Activity分配独立进程:如果上面的方法还不行,可以试试在AndroidManifest里给Unity Activity设置独立进程,让Unity的资源和原生主进程完全隔离,退出时直接杀死Unity进程,不会影响主进程。在Unity Activity的标签里添加:
    android:process=":unity_process"
    
    不过要注意,这种方式下如果需要在原生和Unity之间传数据,得用跨进程通信的方式(比如Messenger或者AIDL),不能直接用内存共享的方式。

备注:内容来源于stack exchange,提问作者nadav mihov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:29:35