Android JNI编程规范

Demo

//增加学生信息:
    addStu(JNIEnv *env,jobject valObj){
        //获取jclass对象
        jclass cls=env->GetObjectClass(valObj);
        //GetFieldID方法用到取到jclas中的name字段。参数列表(jclass对象,字段名称,字段类型) 这点类似于java的反射
        jstring name =(jstring)env->GetObjectField(valObj,env->GetFieldID(cls,"name","Ljava/lang/String;"));
        jint age=(jint)env->GetObjectField(valObj,env->GetFieldID(cls,"age","I"));
        jint sex =(jint)env->GetObjectField(valObj,env->GetFieldID(cls,"sex","I"));
        //创建一个结构类型的对象  jstringToString方法用于把jstring类型转换成char *
        student stu={jstringToString(env,name),(int)age,(int)sex};
        //往向量的末尾增加一个对象
        stus.push_back(stu);
    }
//修改学生信息
    upStu(JNIEnv *env,jobject obj,jobject objValue){
        jclass cls=env->GetObjectClass(objValue);
        jstring name=(jstring)env->GetObjectField(objValue,env->GetFieldID(cls,"name","Ljava/lang/String;"));
        jint sex =(jint)env->GetObjectField(objValue,env->GetFieldID(cls,"sex","I"));
        jint age=(jint)env->GetObjectField(objValue,env->GetFieldID(cls,"age","I"));

        char * searchName =jstringToString(env,name);

        for(int i=0;i<stus.size();i++){
            student stu=stus.at(i);
            if(strcmp(stu.name,searchName)==0){
                stus.at(i).sex=(int)sex;
                stus.at(i).age=(int)age;
            }
        }
    }
//查询学生
    getStu(JNIEnv *env,jobject obj,jstring str){
        const char *nameStr=env->GetStringUTFChars(str,0);
        jclass objectClass =(env)->FindClass("com/myjni/activity/Student");
        jfieldID name =env->GetFieldID(objectClass,"name","Ljava/lang/String;");
        jfieldID sex =env->GetFieldID(objectClass,"sex","I");
        jfieldID age =env->GetFieldID(objectClass,"age","I");

        for(int i=0;i<stus.size();i++){
            student stu=stus.at(i);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值