如何在本机代码中绑定 java 服务?
Posted
技术标签:
【中文标题】如何在本机代码中绑定 java 服务?【英文标题】:How to bind java service in native code? 【发布时间】:2016-03-09 00:12:44 【问题描述】:是否可以在纯本机代码中绑定 java 服务?本质上就是在原生 C 代码下调用这部分代码
Intent i = new Intent();
i.setClassName("com.example.fooservice",
"com.example.fooservice.service");
bindService(i, clientConnection, Context.BIND_AUTO_CREATE);
【问题讨论】:
【参考方案1】:不,不是直接的。但是,您可以通过 JNI 调用您的 NativeActivity
来完成它。
【讨论】:
我认为棘手的部分是获取 clientConnection 的回调,这也可以通过 JNI 实现吗? 另外,为什么 android 不允许本地代码访问 java android 服务..如果你正在编写一个本地应用程序,这似乎是一件非常合理的事情.. Android的dev模型是使用runtime,它为app的进入和控制提供了一种标准化的方式。甚至“本机”应用程序也包装在运行时中(NativeActivity
是 Activity
的一种精简形式,它知道根据您的元数据调用您的本机代码。)框架提供的用 Java 编写的 API 比本机代码。 ServiceConnection
回调很棘手,您无法直接在本机代码中执行此操作。您必须扩展 NativeActivity
并编写自己的“挂钩”以通过 JNI 访问您的本机代码。以上是关于如何在本机代码中绑定 java 服务?的主要内容,如果未能解决你的问题,请参考以下文章
如何在本机代码(Java、ObjectiveC/Swift)中读取 AsyncStorage