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

时间:2015-06-16 00:08:09

标签: java c# android xamarin

我们在.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;
}

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我不确定你们是否已经弄清楚了。我们的经验表明,解决方案不像您的帖子那样以简单的方式工作。

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

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

答案 1 :(得分:0)

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

但如果我可以通过UDP套接字设置客户端 - 服务器通信,那么处理服务似乎有些过分。

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