从Unity3D代码启动android服务在我的AndroidUnity3D应用程序中,我需要启动一个服务,它将在后台运行。我不知道该怎么办。必须在活动上调用方法startService(),但我不知道如何将当前的统一活动从统一脚本传递到我的android插件。我还没有找到任何方法来获取静态方法中的活动并在其中运行startService()。据我了解的顺序,我需要获取主要的Unity3D活动并从中启动服务。我的班应该叫服务。publicfinalclassStatusCheckStarter{publicstaticvoidStartCheckerService(){startService(newIntent(this,CheckService.class));这段代码不起作用,因为“无法解析方法startService”,而且我没有任何东西可以传递给这个参数。我需要获取当前活动。以下是将Activity实例/引用发送到不使用onCreate函数或从UnityPlayerActivity扩展的Java插件的两种方法。方法1:发送Activity引用一次,然后将其存储在Java中的静态变量中以供经常使用:Java:publicfinalclassStatusCheckStarter{staticActivitymyActivity;//从C#调用以获取Activity实例publicstaticvoidreceiveActivityInstance(ActivitytempActivity){myActivity=tempActivity;}publicstaticvoidStartCheckerService(){myActivity.startService(newIntent(myActivity,CheckService.class));}}C#:AndroidJavaClassunityClass;AndroidJavaObjectunityActivity;AndroidJavaClass自定义类;voidStart(){//替换为你的完整包名sendActivityReference("com.example.StatusCheckStarter");//现在,启动服务startService();}voidsendActivityReference(stringpackageName){unityClass=newAndroidJavaClass("com.unity3d.player.UnityPlayer");unityActivity=unityClass.GetStatic("currentActivity");customClass=newAndroidJavaClass(packageName);customClass.CallStatic("receiveActivityInstance",unityActivity);}voidstartService(){自定义类。CallStatic("StartCheckerService");}方法二:在每次函数调用中发送Activity引用Java:}}C#:voidStart(){//替换为你的完整包名startService("com.example.StatusCheckStarter");}voidstartService(stringpackageName){AndroidJavaClassunityClass=newAndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObjectunityActivity=unityClass.GetStatic("currentActivity");AndroidJavaClasscustomClass=newAndroidJavaClass(packageName);customClass.CallStatic("StartCheckerService",unityActivity);注意:您必须将com.example.StatusCheckStarter替换为StatusCheckStarter类的完整包。以上就是C#学习教程:从Unity3D代码启动android服务全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
