【问题标题】:Android Native Activity and Graphical EnvironmentAndroid 原生活动和图形环境
【发布时间】:2015-07-01 09:55:06
【问题描述】:

我正在尝试更深入地了解 android 内部结构,我知道如何使用 NDK,甚至知道它是如何工作的,但我对 Native Activity 和 NDK 提供的其他原生部分有疑问。
据我所知,Android 桌面环境(图形环境)是用 Java 编写和运行的。这是Android框架的一部分(众所周知的图表上的蓝色)。
如果是这样,当从 android 应用程序运行 C/C++ 代码时,我们在 linux 级别上运行它,在 java、dalvik 和所有高级东西之后。
我的问题是我们如何才能拥有 NativeActivity,创建它(使用 opengl 绘制)是一回事,但它在 android 系统架构中的哪里是它仍然以某种方式在 dalvik 进程实例中运行。
我感兴趣的主要是如何与简单 (java) 活动进行通信。
请帮助理解,也许有人可以提供一种图表来更好地理解这一点。
提前谢谢。

【问题讨论】:

    标签: java android c++ android-activity android-ndk


    【解决方案1】:

    从 android 应用程序运行 C/C++ 代码时,您不是在“在 java、dalvik 和所有高级东西之后”运行它。它由 Android Runtime 或 Dalvik 执行。

    本机 Activity 使用 JNI(Java 本地接口)对 Android 框架进行 Java 调用,以创建其 Activity。

    【讨论】:

    • 所以这意味着,我正在为特定平台调用本机编译的对象可执行文件,但它又再次调用 java ?所以它看起来像一个循环?
    • 您可能会将其视为一个循环。 DVM/ART 在本地编译的对象库中调用本地实现,该实现调用 DVM/ART 以访问 Java API。
    • 所以在这种情况下使用NativeActivity并不能带来任何好处,因为它仍然使用Java实现,并且您必须花费更多时间从native层调用到Java层。使用 java Activity 实现会花更多时间吗?我说的对吗?
    • 一旦加载完毕,从原生到Java的调用并不多,所以还是值得的。如果您不需要每帧都调用自己的 Java,那么您应该这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多