2017-08-02 1194 views
0

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

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

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

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

那么,有没有人有任何想法,为什么我的线程在后台将不再执行,我能做些什么来让它再次执行?

另一种选择,我知道它编写的服务,将允许我的程序在后台处理信息。这种方法的缺点是我不得不重写一堆从C#到Java的代码。而这些代码中的一部分不仅仅是一个简单的端口。我想我将不得不重写一些Unity低级网络代码来使用套接字。

那么关于如何进行的任何建议?让我的线程再次运行后台是非常好的,所以我不必为Java重写一堆C#代码。

在此先感谢 约翰·劳瑞

回答

0

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和团结

之间的通信一个很好的教程