摘要:
在系列(1)中讲到,Java与native code的操作有两种方式:(1)在Java中加载动态链接库(2)使用JNI Invocation inteface,在native code中创建JVM JavaVM接口 第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。 第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。 两种情况下,都可以用全局变量, 阅读全文
阅读排行榜
善用Android预定义样式
2010-12-02 15:41 by RayLee, 11751 阅读, 收藏,
摘要:
字体大小 对于能够显示文字的控件(如TextView EditText RadioButton Button CheckBox Chronometer等等),你有时需要控制字体的大小。Android平台定义了三种字体大小。 "?android:attr/textAppearanceLarge" "?android:attr/textAppearanceMedium" "?android:attr/textAppearanceSmall" 使用方法为: android:textAppearance="?android:attr/textAppearanceLarge" android 阅读全文
java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法
2010-11-09 17:13 by RayLee, 6798 阅读, 收藏,
摘要:
用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。BitmapFactory.Options.inSampleSize设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误。inSampleSize的具体含义请参考SDK文档。例如:如何设置恰当的inSampleSize设置恰当的inSampleSize是解决该问题的关键之一。BitmapFactory.Options提供了另一个成员inJustDecodeBounds。设置inJustDecodeBounds为true后 阅读全文
JNI系列(2):jstring操作
2010-10-21 10:33 by RayLee, 6313 阅读, 收藏,
摘要:
使用JNI时,最常见的操作是将jstring转换成UTF字符串。JNI提供了几个转换函数:GetStringUTFChars, GetStringUTFRegion。 GetStringUTFChars返回一个指向UTF字符串的指针,该函数会分配内存空间存储该字符串,因此使用完后一定要记得调用对应的释放函数ReleaseStringUTFChars释放分配的空间。 GetStringUTFRegion将UTF字符串存储到预分配的内存空间。相比GetStringUTFChars,它没有重新分配内存空间,因此也无需释放。 开发时,根据需要选择适当的函数。 Android源代码大量使用Get 阅读全文
JNI系列(4):如何访问自定义类对象
2010-10-21 13:51 by RayLee, 3781 阅读, 收藏,
摘要:
JNI规范中仅仅给出了String,Array两种引用类型的访问,那么如果使用了自定义的类,在JNI中该如何访问?如以下代码所示,用户自定义了Student类,创建了实例student,并希望在JNI函数中修改实例student的成员age。 对应的JNI函数:其实思路是一样的,先找到Student类,然后找到’age’的fieldID。 阅读全文
浙公网安备 33010602011771号