繁体   English   中英

在Xamarin中创建Android服务,并从Java本机客户端应用程序调用其方法

[英]Create an Android Service in Xamarin and invoke its methods from a Java native client app

我们在.net中拥有大量算法,已移植到Xamarin。 现在,我们的客户要求我们在Android / Java下使用它们。 我的想法是使用Xamarin创建Android服务,以便我们的客户可以编写Java客户端来启动服务,如下所示:

Intent testintent = new Intent ("com.swe.TestService");
StartService (testintent);

问题是:一旦启动,它们如何调用我们在服务上公开的方法? 例如,为简单起见,我们可以假设我们在服务上有一个这样的方法:

public int Sum(int first, int second)
{
   return first + second;
}

在此先感谢您的帮助!

我不确定你们是否知道了。 我们的经验表明,该解决方案无法像您的帖子中那样简单地工作。

Xamarin不支持Java调用C#代码,因此您不能将Java和C#代码混合在一起。 将C#放入服务中是正确的,但是该服务必须是远程服务!! 服务不仅注目,而且与服务捆绑在一起。 绑定是Android中的IPC。 它是消息驱动的。 您不能简单地在Java中调用C#方法。 您必须定义自己的协议并在C#和Java中实现消息处理程序。 方法调用和结果返回必须转换为发送和返回的消息。

Java和C#中的远程服务绑定本身都是相似的。 在Android SDK ApiDemo中查看示例代码非常有帮助。

我也在考虑这种IPC。 https://developer.xamarin.com/guides/android/application_fundamentals/services/out-of-process-services/

但是,如果我可以通过UDP套接字设置客户端与服务器之间的通信,那么对服务进行处理似乎对我来说就算是过大了。

使用UDP的老式,老式,最终通用解决方案。 我使用它成功连接了Unity3D和常规C#应用程序。 在这种情况下也应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM