转:http://blog.csdn.net/xiruanliuwei/article/details/7560914

Android NDK为我们提供了两种方式来实现我们的native activity:

1、The native_activity.h header defines the native version of the NativeActivity class. It

contains the callback interface and data structures that you need to create your native

activity. Because the main thread of your application handles the callbacks, your callback

implementations must not be blocking. If they block, you might receive ANR (Application Not

Responding) errors because your main thread will be unresponsive until the callback returns.

Read the comments in the

<ndk_root>/platforms/android-9/arch-arm/usr/include/android/native_activity.h file for

more information.

2、The android_native_app_glue.h file defines a static helper library built on top of the

native_activity.h interface. It spawns another thread to handle things such as callbacks or

input events. This prevents any callbacks from blocking your main thread and adds some

flexibility in how you implement the callbacks, so you might find this programming model a

bit easier to implement.

The <ndk_root>/sources/android/native_app_glue/android_native_app_glue.c

source is also available to you, so you can modify the implementation if you need. Read the

comments in the <ndk_root>/sources/android/native_app_glue/android_native_app_glue.h

file for more information.

通过上面的描述,我们可以发现方式二会简单一些。在使用方式一实现native activity时,

需要注意在实现回调函数时,不要阻塞了main UI thread,否则会出现ANR。而方式二中,

则在一个新线程中创建一个事件循环执行回调函数,因此不会造成main UI thread阻塞。

Android NDK之二:创建NativeActivity的更多相关文章

  1. Ubuntu 14.04 Android 使用Maven二 创建自己的Mavenproject

    依据https://code.google.com/p/maven-android-plugin/wiki/GettingStarted 介绍,有两种方法能够创建Mavenproject. 第一种方法 ...

  2. Android Studio体验(二)--创建项目和Genymotion试用

    上周日已经体验了一把Android Studio顺便没事点了点其他功能,不过还是从自己创建项目开始说吧,首先我们要熟悉Android Studio中的Project 和 Module 两个概念.And ...

  3. windows系统上安装与使用Android NDK r8d(二)

    四.    在eclipse中集成c/c++开发环境    1. 装Eclipse的C/C++环境插件:CDT,这里选择在线安装.          首先登录http://www.eclipse.or ...

  4. 用Android NDK编译FFmpeg

    附(2018-01-06):     有一个将x264及lame等库集成进去了且基于android的ffmpeg的编译方法,地址参见:       https://github.com/writing ...

  5. 三、Android NDK编程预备之Java jni入门创建C/C++共享库

    转自: http://www.eoeandroid.com/thread-264971-1-1.html 应网友回复,答应在两天前要出一篇创建C/C++共享库的,但由于清明节假期,跟朋友出去游玩,丢手 ...

  6. Android NDK入门实例 计算斐波那契数列二生成.so库文件

    上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...

  7. Android NDK 开发(二) -- 从Hlello World学起【转】

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/41805719  上篇文章讲述了Android NDK开发的一些基本概念,以及NDK ...

  8. 二、Android NDK编程预备之Java jni入门Hello World

    转自:  http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264543&fromuid=588695 昨天已经简要介绍了J ...

  9. android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值

    1,关于java端类及接口定义请参考: android NDK 实用学习-获取java端类及其类变量 2,对传过来的参数进行赋值: 对bool类型成员进行赋值  env->SetBooleanF ...

随机推荐

  1. 怎么样入门python?来自知乎

    作者:谢科链接:https://www.zhihu.com/question/20899988/answer/24923424来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  2. DMA直接内存存取原理

    DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术. 要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式.利用中断进行数据传送,可以大 ...

  3. HDU 1850 Being a Good Boy in Spring Festival (Nim博弈)

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  4. Mac XMPP Openfire 服务器配置

    前言 Openfire 是免费的.开源的.基于可拓展通讯和表示协议(XMPP).采用 Java 编程语言开发的实时协作服务器.Openfire 安装和使用都非常简单,并利用 Web 进行管理.单台服务 ...

  5. mongodb常用命令小结

    一.基于条件的查询 db.getCollection('monitor_log') .find({"requestUrl" : /app\/v1\/findcards\/cn/, ...

  6. myeclipse 遇到的一些问题及解决方案

    1..提示键配置 一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多 ...

  7. android安卓系统上运行jar文件

    原文链接: http://blog.sina.com.cn/s/blog_658c8cea0101mdhp.html 步骤如下: 1. 将文件打包成可执行jar文件(可在eclipse里export) ...

  8. java对象内存占用

    一.前言想知道java对象在内存中的占用情况吗?感谢这位大神的无私分享. http://yueyemaitian.iteye.com/blog/2033046 二.原文的扩充1. 增加了代理jar包的 ...

  9. MPU6050陀螺仪和加速度计的校准

    加速度计和陀螺仪的校准: 在传感器静止不动水平放置时,测出陀螺仪和加速度计各轴的偏移值,保存.以后每次上电调用dmp_set_xx_bias()就行了. u8 run_self_test(void) ...

  10. J2EEweb开发中的缓存问题的研究

    一般情况下,浏览器都会缓存已经访问过的页面内容,关于如何禁止浏览器缓存的介绍,在网上到处都有相关的文章,但是,关于浏览器如何利用缓存,如何处理缓存的讲解,却鲜有人谈及 .浏览器在访问已缓存过的资源时, ...