java - 将 C++ 与 Objective-C 和 Java 混合使用

标签 java android c++ objective-c java-native-interface

你好,我注意到从 C++ 调用 java 方法时我们使用了 JNI 帮助程序,并且在我们调用的方法中我们必须声明 this ,但是在 objective-c 上我们不调用任何等效于 runOnUiThread 的方法?我想知道这是为什么,是否与 objective-c 和 c++ 能够混合在同一个文件 (.mm) 中有关?

activity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // your code
        }

最佳答案

你的假设是对的; Objective-C(++)(与 Java 或 Swift 不同)与 C++ 交织在一起,您可以将 Objective-C 代码与 C++ 代码混合使用。结尾的 .mm 文件实际上是在向编译器提示这种混合是有意的。对于 Java 和 Swift,您需要像 JNI 这样的“桥梁”来访问其他语言的 Artifact 。

在 Objective-C 中,任何来自主线程(即 UI 线程)的调用都将默认在主线程中执行,除非您将其显式分派(dispatch)到另一个异步线程。因此显式 runOnUiThread 是多余的。

关于java - 将 C++ 与 Objective-C 和 Java 混合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54082175/

相关文章:

c++ - 子类作为模板基类的模板模板参数,而模板基类又是子类函数参数

java - 使用 spring batch 并行执行作业

java - Jogl-2.0不支持GLAutoDrawable gLDrawable.addKeyListener(this); ?

android - 如何使用 XML 更改基于状态的文本样式?

android - 我可以在 Android 1.5 中运行 Android 2.0 应用程序吗?

c++ - 如何声明同一类的成员 vector ?

c++ - 尝试打开 SDL2 窗口时与 D-Bus 相关的运行时崩溃

Java 17 和 Yourkit 2021.11

java - 从当前字母中查找字母表中的第 n 个字母

android - 线程不在android服务中运行