什么是Android NDK 什么情况下使用Android NDK
2011-10-11 20:36
323 查看
Android NDK是一个工具集,可以将本地代码嵌入到你的Android 应用中。
Android 应用是在dalvik虚拟机中运行的。NDK可以让你使用本地代码语言来开发应用,比如说C/C++,这种方法对某些类型的应用的是有好处的,可以充分利用本地代码和在某些情况下加速代码的执行。
什么时候用NDK?
对于绝大多数的应用来说,使用NDK并不是一个明智的选择,作为一个开发者,我们需要衡量它所带来的好处和缺点。使用本地代码并不一定可以使性能得到优化,但是通常使得应用代码变得复杂。一般来说,我们将应用中关键部分的代码用C/C++写,而不能由于我们习惯于用C/C++开发而把所有的代码都用C/C++来实现。
有下面这些特点的应用可以考虑使用NDK:
1 独立的,不和其他应用有关系的
2 频繁占用CPU但是申请的内存空间不是很大的操作,像信号的处理,物体的模拟等等
简单的用C/C++重写我们的代码是不会带来很大的性能提升的。
在考虑是否采用本地代码开发的时候,要结合应用的实际需求并且看看Android 的framework层是否提供了我们需要的API,但是用NDK可以充分利用本地已经有的代码。
Android framework提供下面两种方法来使用本地代码:
1 在Android framework的框架下面开发应用,使用JNI的方法来使用NDK本地方法提供的API。这样的好处就是我们可以很好的利用的Android的framework提供的框架,但是需要编写本地具体实现的代码。这样的APK可以在Android 1.5及其之后的版本上面运行。
2 写一个本地的Activity,在本地代码中实现生命回调函数,AndroidSDk提供了 NativeActivity类,这个类可以方便的让你在你的本地代码中实现回调函数(OnCreate,OnPause),从而当这些事件发生的时候处理。用本地类实现的应用可以在Android 2.3及其之后的版本上面运行。
Android 应用是在dalvik虚拟机中运行的。NDK可以让你使用本地代码语言来开发应用,比如说C/C++,这种方法对某些类型的应用的是有好处的,可以充分利用本地代码和在某些情况下加速代码的执行。
什么时候用NDK?
对于绝大多数的应用来说,使用NDK并不是一个明智的选择,作为一个开发者,我们需要衡量它所带来的好处和缺点。使用本地代码并不一定可以使性能得到优化,但是通常使得应用代码变得复杂。一般来说,我们将应用中关键部分的代码用C/C++写,而不能由于我们习惯于用C/C++开发而把所有的代码都用C/C++来实现。
有下面这些特点的应用可以考虑使用NDK:
1 独立的,不和其他应用有关系的
2 频繁占用CPU但是申请的内存空间不是很大的操作,像信号的处理,物体的模拟等等
简单的用C/C++重写我们的代码是不会带来很大的性能提升的。
在考虑是否采用本地代码开发的时候,要结合应用的实际需求并且看看Android 的framework层是否提供了我们需要的API,但是用NDK可以充分利用本地已经有的代码。
Android framework提供下面两种方法来使用本地代码:
1 在Android framework的框架下面开发应用,使用JNI的方法来使用NDK本地方法提供的API。这样的好处就是我们可以很好的利用的Android的framework提供的框架,但是需要编写本地具体实现的代码。这样的APK可以在Android 1.5及其之后的版本上面运行。
2 写一个本地的Activity,在本地代码中实现生命回调函数,AndroidSDk提供了 NativeActivity类,这个类可以方便的让你在你的本地代码中实现回调函数(OnCreate,OnPause),从而当这些事件发生的时候处理。用本地类实现的应用可以在Android 2.3及其之后的版本上面运行。
相关文章推荐
- 为什么使用API?什么情况下避免使用API?
- Web service到底是什么?在什么情况下你应该使用Web service
- C#关键字var是什么,在何种情况下使用
- 什么是回调函数?回调函数适合在什么情况下使用?
- java中几种Map在什么情况下使用,并简单介绍原因及原理
- DNS分别在什么情况下使用UDP和TCP?
- linux用什么命令可以查看内存使用的情况详细信息
- [转载]什么情况下该使用变量延迟?
- delegate和notification区别,分别在什么情况下使用?
- c++ 什么情况使用深拷贝什么情况使用浅拷贝
- ios 什么情况下使用assign,copy,retain,strong,weak
- sparkSQL里 sql语句,dataframe,Thrift Server JDBC都可以实现对数据的查询,过滤等操作, 哪这3种情况分别是什么情况下使用
- #{}和${}的区别及什么情况下必须使用${}
- 同步和异步有何异同,在什么情况下分别使用他们?
- SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
- 最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- java开发线程篇3:同步和异步有何异同,在什么情况下分别使用他们?举例说明。
- [转载]什么情况下该使用变量延迟?
- HTTP协议中POST、GET、HEAD的区别是什么?分别在什么情况下使用?
- 《Oracle编程艺术》学习笔记(31)-什么情况下适合使用B*树索引