当前位置: 首页 > news >正文

钓鱼网站怎样做中国职业技能培训中心官网

钓鱼网站怎样做,中国职业技能培训中心官网,广州电商网站建设,搜狗新闻源网站怎么做本文主要讲解Android NDK开发中JNIEnv、jobject与jclass的相关知识&#xff0c;并用c和c两种语言实现了jobject和jclass。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习&#xff0c;梳理总结后写下文章&#xff0c;对音视频相关内容感兴趣的读者…

本文主要讲解Android NDK开发中JNIEnv、jobject与jclass的相关知识,并用c和c++两种语言实现了jobject和jclass。


本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习,梳理总结后写下文章,对音视频相关内容感兴趣的读者,可以点击观看课程网址:零声教育


Android NDK开发(二)——JNIEnv、jobject与jclass关系

  • JNIEnv、jobject与jclass关系
  • jobject和jclass实现
  • 利用c语言实现

JNIEnv、jobject与jclass关系

JavaVM 和 Env 的关系

  1. JavaVm是虚拟机在jni层的代表,⼀个进程只有⼀个JavaVm,所有线程共⽤⼀个JavaVM。
  2. JNIEnv 是⼀个线程相关的结构体,它代表了java的运⾏环境 。每⼀个线程都会有⼀个,不同的线程中
    不能相互调⽤,每个JNIEnv都是线程专有的。 jni中可以拥有很多个JNIEnv,可以使⽤它来进⾏java层
    和native层的调⽤。
  3. JNIEnv 是⼀个指针,指向⼀个线程相关的结构,线程相关结构指向了JNI函数指针数组。这个数组⾥⾯
    定义了⼤量的JNI函数指针。
  4. 在同⼀个线程中,多次调⽤JNI层⽅法,传⼊的JNIEnv都是相同的。
  5. 在java层定义的本地⽅法,可以在不同的线程中调⽤,因此是可以接受不同的JNIEnv。

jobject和jclass区别:
jobject:实例引⽤(C++的说法:对象引⽤)(普通函数)
jclass: 类引⽤ (静态函数)

jobject和jclass实现

创建一个新项目,
java->com.example.ndk4_3->MainActivity文件中,添加声明

static public native String staticstringFromJNI();

在这里插入图片描述
之后利用java.h自动生成JNI接口
在这里插入图片描述
自动生成接口:
在这里插入图片描述
修改cpp->native-lib.cpp

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_ndk4_13_MainActivity_staticstringFromJNI(JNIEnv *env,jclass){std::string hello = "Static Hello from C++";return env->NewStringUTF(hello.c_str());
}

此时调用的,普通函数就是jobject,静态函数就是jclass,与c++中类似,静态函数是属于整个类的,而普通函数属于每个对象的。
在这里插入图片描述
之后,修改对应文件,运行程序。
修改res->layout->activity_main.xml文件,设置布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/sample_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:text="Hello World!"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/sample_text2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="100dp"android:text="Hello World!"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

布局预览如下:
在这里插入图片描述
修改java->com.example.ndk4_3->MainActivity文件

	TextView tv2 = findViewById(R.id.sample_text2);tv2.setText(staticstringFromJNI());

在这里插入图片描述
之后运行即可:
在这里插入图片描述

利用c语言实现

cpp->includes->CMaketList.txt中的native-lib.cpp修改为native-lib.c
在这里插入图片描述
新建一个native-lib.c如下

#include <jni.h>JNIEXPORT jstring JNICALL
Java_com_example_ndk4_13_MainActivity_stringFromJNI(JNIEnv *env,jobject obj/* this */) {char str[] = "Hello from C";return (*env)->NewStringUTF(env, str);
}
JNIEXPORT jstring JNICALL
Java_com_example_ndk4_13_MainActivity_staticstringFromJNI(JNIEnv *env,jclass jcs){char str[] = "Static Hello from C";return (*env)->NewStringUTF(env, str);
}

运行:
在这里插入图片描述

http://www.ds6.com.cn/news/89935.html

相关文章:

  • 网站是怎么制作出来的网站建设策划方案
  • iis 启用网站 浏览提示service竞价托管
  • 个人怎么做旅游网站seo网站关键词优化软件
  • 做网站外包公司有哪些sem工具是什么
  • 封面上的网站怎么做的微信附近人推广引流
  • 企业建网站群网站的推广方案的内容有哪些
  • 企业网站可以做游戏类网站么hao123网址大全浏览器设为主页
  • 5g网站空间需要多少钱制作一个网站的全过程
  • 网站的发展历史自助建站工具
  • 嘉定西安网站建设企业网站seo优化外包
  • 货架网站开发百度小说排行榜完本
  • 云速成美站做网站好吗网站设计费用
  • 任务一 分析电子商务网站栏目结构网络广告的形式
  • 学校网站的功能郑州网站制作公司
  • 泰安网站建设排行网站页面排名优化
  • java做的网站在线客服系统东莞网站建设推广哪家好
  • 做淘宝图片的网站山东seo推广
  • 青岛建站软件百度竞价怎么操作
  • 广州做网站哪间公司好百度获客平台怎么收费的
  • 顺德定制网站设计怎么开网站平台挣钱
  • 好用的免费网站建设seo网络优化前景怎么样
  • 广州网站建设外包建设推广线上培训机构排名前十
  • 怎样查到一些做品牌包的网站生猪价格今日猪价
  • 网站建设教程pdf百度云seo排名优化推广教程
  • 网站开发工程师seo排名优化收费
  • 网页网站开发桔子seo网
  • 水利部建设管理与质量安中心网站永久免费客服系统有哪些软件
  • wordpress博客不分页安徽网站推广优化
  • 个人网站如何制作seo千享科技
  • 做网站的开题报告怎么写游戏推广拉人渠道