我有一个在Android上运行的Unity应用程序。当应用程序置于后台时,它也会继续运行。它不使用服务在后台运行。相反,此应用程序创建一个新线程,当应用程序处于后台时,此线程会继续运行。
最近,我不得不将另一个应用程序的一些代码合并到这个应用程序中。这个应用程序有一个我合并到第一个应用程序中的Activity。
不同应用的Activity名称不同。在我的Unity应用中,Activity在后台运行,它的名称是“com.unity3d.player.UnityPlayerNativeActivity”。我正在合并的Activity是“com.indotraq.android.rtls.MainActivity”,它扩展了UnityPlayerActivity
通过实验,如果我的Activity不是“com.unity3d.player.UnityPlayerNativeActivity”,则在后台运行的线程将不再执行。
那么,有没有人知道为什么我的线程在后台不再执行,我可以做些什么来让它再次执行?
我知道的另一个选择是编写一个服务,允许我的程序在后台处理信息。这种方法的缺点是我必须重写一堆代码,从C#到Java。其中一些代码不仅仅是一个简单的端口。我想我必须重写一些Unity低级网络代码来使用套接字。
那么有什么建议吗?如果能让我的线程再次在后台运行,那就太好了,这样我就不必把一堆C#代码重写成Java了。
提前感谢John Lawrie
1条答案
按热度按时间5f0d552i1#
RuninBackgorund在Android和IOS中被忽略,您可以看到here
在Android上后台运行的唯一有效方法是通过服务。您可以使用OnApplicationPause方法在游戏暂停/取消暂停时获得通知。
Here你有一个很好的教程之间的通信android和统一