魅力程序猿

  • 首页
  • Java
  • Android
  • APP
    • 扑克计分器
    • Video Wallpaper
  • 联系我
  • 关于我
  • 资助
道子
向阳而生
  1. 首页
  2. Unity3D
  3. 正文

解决Unity执行mUnityPlayer.quit() 导致APP退出

2016年12月26日 13961点热度 0人点赞 7条评论

做Antutu评测的时候,之前都是将3D部分作为一个APP进行跑Unity 3D部分,但是用户开始谩骂说怎么还要装个3D,哎,中国用户不是你做个免费的软件让他用他就觉得很爽了,他们要的是没有广告、没有崩溃、运行非常流畅等,都是高级别的要求。跑题了,这样一来,产品就开始舔用户了,说要把3D部分合到一个APP里。毕竟我也是半路进来的,不是太了解,觉得应该没有问题吧,实际上还是出现了很多意想不到的问题,其中Unity执行mUnityPlayer.quit() 导致APP退出,就是问题之一。、

那尝试了很多种方案,不过觉得只有一种方案比较合理,那就是将UnityPlayerActivity放到一个新的进程里,因为执行mUnityPlayer.quit()就会将Application进程给杀掉,这个Unity性质决定的,目前暂时官方没有给出合理的方案。

你可以查看源码后,会发现UnityPlayer.quit()里的kill()

protected void kill() {
    Process.killProcess(Process.myPid());
}

我滴神呀,直接干死自己所在的进程,Unity真是简单粗暴啊,不过也只有这样才能彻底释放资源。

方案:

首先,把UnityPlayer所在的Activity放到一个新的进程里。

加入android:process=":unity"

<activity
    android:name=".UnityPlayerActivity"
    android:label="@string/app_name"
    android:launchMode="singleTask"
    android:screenOrientation="landscape"
    android:process=":unity"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
    <meta-data
        android:name="unityplayer.UnityActivity"
        android:value="true" />
</activity>

接下来,按照下面步骤进行:

第一步,在activity里定义一个unityFinish方法。

第二步,在unity脚本中调用activity里定义好的unityFinish方法。(如不知道怎么调用请移步到:Android 与 Unity 的交互)

第三步,activity的unityFinish方法里处理一些结束操作,最后调用Activity的finish()。

第四步,在activity的destroy方法里调用UnityPlayer的quit()。

这样你需要进行结束要处理的事情放到了自己定义的方法里进行了处理,处理完后调用Activity的finish(),这样activity开始走自己结束的方法,在Activity的的destroy方法里调用super.onDestroy()之前调用mUnityPlayer.quit(),这个时候会先走UnityPlayer的quit()处理后事,这样即使把自己的宿主进程kill了,用户也感知不到了。

How do i stop mUnityPlayer.quit() closing the entire android app?

如果,你有更好的方案可以告诉我哦。

 

标签: mUnityPlayer.quit() closing the entire android app 解决Unity执行mUnityPlayer.quit() 导致APP退出
最后更新:2016年12月26日

daozi

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

  • 木薯粉

    不错,解决了我的问题

    2016年12月26日
    回复
  • vmix 19 crack

    Me enjoying, will read more. Thanks!

    2017年9月28日
    回复
  • GPU Mining

    I am just starting to learn about all of this. Thanks!

    2018年2月19日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    回复 GPU Mining 取消回复
    搜索
    联系方式

    QQ群:179730949
    QQ群:114559024
    欢迎您加入Android大家庭
    本人QQ:136049925

    赐我一丝安慰
    给我一点鼓励

    COPYRIGHT © 2023 魅力程序猿. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    豫ICP备15000477号