java - 在 Xamarin 中创建 Android 服务并从 Java native 客户端应用程序调用其方法

标签 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;
}

在此先感谢您的帮助!

最佳答案

我不确定你们有没有想出来。我们的经验表明该解决方案无法像您帖子中那样以简单的方式工作。

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/

相关文章:

Android - 调频/ radio 传输

java - eclipselink 刷新其共享缓存需要多长时间

Java 类构造函数错误

java - 如何将图片作为多部分 POST 请求的一部分发送 - Java HtmlUnit

c# - Rhino Mocks 中不区分大小写的期望

c# - 如何在 WPF 中使用异步初始化对 ViewModel 进行单元测试

c# - C#中 "if(object is type)"的速度

android - 如何启用 Actionbar 文件夹功能,如新的 GMail 应用程序

java - 在两个后端系统之间安全地传递用户名和密码 endcrypted

android - 无效文件 : android-sdk-linux/extras/android/support/v7/appcompat/build. xml