【问题标题】:Android Unity App running in backgroundAndroid Unity App 在后台运行
【发布时间】:2017-08-02 06:57:05
【问题描述】:

我有一个在 Android 上运行的 Unity 应用。当应用程序置于后台时,它也会继续运行。它不使用服务在后台运行。相反,这个应用程序会创建一个新线程,并且当应用程序在后台时,这个线程会继续运行。

最近,我不得不将另一个应用程序中的一些代码合并到这个应用程序中。这个另一个应用有一个我合并到第一个应用中的活动。

来自不同应用的 Activity 具有不同的名称。在我在后台运行的 Unity 应用程序中,它的活动是“com.unity3d.player.UnityPlayerNativeActivity” 我要合并的活动是“com.indotraq.android.rtls.MainActivity”,它扩展了 UnityPlayerActivity

通过实验,如果我的活动不是“com.unity3d.player.UnityPlayerNativeActivity”,我在后台运行的线程将不再执行。

那么,有没有人知道为什么我的后台线程将不再执行以及我可以做些什么来让它再次执行?

我知道的另一个选项是编写一个服务,允许我的程序在后台处理信息。这种方法的缺点是我必须将一堆代码从 C# 重写为 Java。而且其中一些代码不仅仅是一个简单的移植。我想我必须重写一些 Unity 低级网络代码才能使用套接字。

那么关于如何进行的任何建议?让我的线程再次在后台运行会很棒,这样我就不必将一堆 C# 代码重写为 Java。

提前致谢 约翰·劳里

【问题讨论】:

    标签: java c# android unity3d


    【解决方案1】:

    Android 和 IOS 忽略 RuninBackgorund 如何查看 here

    在 Android 后台运行的唯一有效方式是通过服务。您可以使用 OnApplicationPause 方法在游戏暂停/取消暂停时获得通知。

    public void OnApplicationPause(bool paused) {
    if(paused) {
    // Game is paused, start service to get notifications
    } else {
    // Game is unpaused, stop service notifications. 
    }
    

    Here你有一个很好的关于android和unity之间通信的教程

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 2011-07-12
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多