【问题标题】:Resuming Application on Android with Unity使用 Unity 在 Android 上恢复应用程序
【发布时间】:2014-02-18 23:13:46
【问题描述】:

我正在尝试使用 OnApplicationPause 函数在 Unity 中实现暂停。

当我通过按主页按钮退出我的游戏(在 Android 上)然后通过活动应用程序列表返回时,它似乎工作正常,但是当我按主屏幕上的游戏图标时,它重新启动游戏而不是让我回来.

有没有办法解决这个问题?

【问题讨论】:

    标签: c# unity3d resume


    【解决方案1】:

    对我来说,当我在日志中有一个:android.os.DeadObjectException 时,就会发生这种情况。 (意味着应用程序已经死了)。

    检查您的日志中是否有类似的内容:

    I/ActivityManager(  600): Restarting because process died: ActivityRecord{439f9588 u0 com.mycompany.myapp/com.unity3d.player.UnityPlayerProxyActivity}
    W/ActivityManager(  600): Exception when starting activity com.mycompany.myapp/com.unity3d.player.UnityPlayerProxyActivity
    W/ActivityManager(  600): android.os.DeadObjectException
    W/ActivityManager(  600):   at android.os.BinderProxy.transact(Native Method)
    W/ActivityManager(  600):   at android.app.ApplicationThreadProxy.scheduleLaunchActivity(ApplicationThreadNative.java:759)
    W/ActivityManager(  600):   at com.android.server.am.ActivityStack.realStartActivityLocked(ActivityStack.java:1120)
    W/ActivityManager(  600):   at com.android.server.am.ActivityStack.startSpecificActivityLocked(ActivityStack.java:1247)
    

    ...如果是这样,请在您的日志中进一步回顾一下,看看您的应用为何会死机。 为了让应用程序不死,我不得不移动意图过滤器:

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    

    从 UnityPlayerProxyActivity 到 UnityPlayerNativeActivity

    【讨论】:

    • 移动这个意图过滤器也对我有用!我不知道为什么,但这不是重点!
    • 当心-这对我有用,但是移动意图过滤器会产生一些不良影响。如果我的游戏的现有用户将图标固定在他们的主页上,他们会丢失图标,有时(我不确定具体情况)图标会从启动器中完全消失。
    【解决方案2】:

    它应该在您返回游戏时恢复。如果没有,那么可能是您的游戏流程在暂停恢复后自动重新启动。

    在您的游戏中,尝试检查 OnApplicationPause 的状态并从那里进行调试。代码示例在这个线程http://answers.unity3d.com/questions/286939/detecting-when-applicationdidbecomeactive-in-unity.html

    【讨论】:

    • 可能是因为我的项目中有 2 个场景?
    • 不,这应该不是问题。一种可能性是您的应用程序在恢复时出错,这就是它重新启动的原因。您可能想像在@Enzign 答案中一样检查 logcat。
    【解决方案3】:

    根据我的经验,当您的 AndroidManifest.xml 文件中没有所有正确的信息时,就会发生这些奇怪的事情。特别是这一行:

    <activity android:name="your_name_here.Activity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:screenOrientation="your_orientation_here_if_needed">
    

    确保“android:configChanges”包含这里的所有内容。 否则,要为您提供更具体的信息,您需要提供有关何时发生这种情况的 logcat。

    【讨论】:

      【解决方案4】:

      你有没有检查过 android manifest 上的启动模式,并将值设为 android:launchMode="singleTask"

      【讨论】:

        【解决方案5】:

        当您将应用导出为 Android gradle 项目时,您是否尝试过操纵其生命周期?

        您可以通过在 File - Build Settings 中勾选 Export Project 并单击 Export 来执行此操作(在 Unity 2018.4.5 中,其他版本可能会有所不同) .例如,您可以在 Android Studio 中打开生成的 gradle 项目,应该会找到 UnityPlayerActivity 并出现以下情况:

            // Pause 
            @Override protected void onPause()
            {
                super.onPause();
                mUnityPlayer.pause();
            }
        
            // Resume Unity
            @Override protected void onResume()
            {
                super.onResume();
                mUnityPlayer.resume();
            }
        
            @Override protected void onStart()
            {
                super.onStart();
                mUnityPlayer.start();
            }
        
            @Override protected void onStop()
            {
                super.onStop();
                mUnityPlayer.stop();
            }
        
            // Low Memory Unity
            @Override public void onLowMemory()
            {
                super.onLowMemory();
                mUnityPlayer.lowMemory();
            }
        
            // Trim Memory Unity
            @Override public void onTrimMemory(int level)
            {
                super.onTrimMemory(level);
                if (level == TRIM_MEMORY_RUNNING_CRITICAL)
                {
                    mUnityPlayer.lowMemory();
                }
            }
        

        我没有这方面的经验,但想向您展示这种可能性:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-10-08
          • 1970-01-01
          • 2010-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多