unity3d Android Unity应用程序在后台运行

vom3gejh  于 2022-11-25  发布在  Android
关注(0)|答案(1)|浏览(713)

我有一个在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

5f0d552i

5f0d552i1#

RuninBackgorund在Android和IOS中被忽略,您可以看到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和统一

相关问题