我们在 .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# 放入服务中是正确的,但该服务需要是远程服务!!不仅盯着服务,还与服务绑定(bind)。 Binding是Android中的一个IPC。它是消息驱动的。您不能简单地调用 Java 中的 C# 方法。您必须在 C# 和 Java 中定义自己的协议(protocol)并实现消息处理程序。方法调用和结果返回必须转换为发送和返回的消息。
远程服务绑定(bind)本身在 Java 和 C# 中是相似的。查看 Android SDK ApiDemo 中的示例代码非常有帮助。
关于java - 在 Xamarin 中创建 Android 服务并从 Java native 客户端应用程序调用其方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30856903/