Android工程嵌Unity模块内存常驻方案(Unity模块挂起不销毁)

        在Android Studio工程中嵌套Unity导出的模块,官方默认就是使用singleTask的方式,每次启用Unity模块时都会另外开辟一个新的进程,当退出unity模块时,会把进程给finish掉(参考一这篇https://blog.csdn.net/ssssssilver/article/details/108326480

       但由于业务要求不一样,可能需要在返回Andorid主进程时,只是挂起unity模块并不销毁,这样下一次再进入时就不需要重复初始化操作,而且也可以访问上一次加载的内存。这个功能需求涉及到android的singleInstance的特性,具体操作如下所示。

1.在主工程的AndroiManifest.xml中设置unity模块的运行模式,添加一行android:launchMode="singleInstance"

这样就可以把unity模块设置成单例模式

2.当需要退出unity模块回到列表时,需要调用方法把当前的unity进程挂起

image.png

3.同时要注意的是,因为unity模块已经单例化了,第一次的启用会执行OnCreate回调,之后再进入AR模块时不会再触发OnCreate回调,可以在onResume或者onNewIntent中执行加载场景操作。

image.png

4.因为unity模块设置成了单例模式,所以当启用过AR模块后都会一直存在内存中,会占用一定的内存空间

如果不需要unity常驻内存,可以取消单例的设置,并且在退出unity模块时,把moveTaskToBack(true)换成finish()。

猜你喜欢

转载自blog.csdn.net/ssssssilver/article/details/108602392
今日推荐