我们在.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;
}
提前感谢您的帮助!
答案 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#应用程序。也应该在这种情况下工作。