Android Studio JNI 编程 创建子线程

第一步:创建Native C++项目在这里插入图片描述

第二步:创建完成后,加载NDK

在这里插入图片描述
在这里插入图片描述

第三步:编写界面

<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

   <Button
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="创建一般线程"
       android:onClick="normal"/>

</LinearLayout>

第四步:创建一个类ThreadDemo

package com.example.jnithread;

public class ThreadDemo {
    static {
        System.loadLibrary("native-lib");
    }
    public native void normalThread();
}

第五步:在MainActivity.java中使用这个类

package com.example.jnithread;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    private ThreadDemo threadDemo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        threadDemo = new ThreadDemo();
    }

    public void normal(View view){
        threadDemo.normalThread();
    }
}

第六步:编写AndroidLog.h头文件,用于输出Log

//
// Created by 92353 on 2020/3/16.
//

#ifndef JNITHREAD_ANDROIDLOG_H
#define JNITHREAD_ANDROIDLOG_H

#endif //JNITHREAD_ANDROIDLOG_H

#include <android/log.h>

#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, "CLogTag", __VA_ARGS__)```

## 第七步:编写C/C++代码——native.cpp

```c
#include <jni.h>
#include <string>
#include "pthread.h"
#include "AndroidLog.h"

pthread_t thread;
void *normalCallBack(void *data){
    LOGE("创建线程成功");
    pthread_exit(&thread);
}

extern "C"
JNIEXPORT void JNICALL
Java_com_example_jnithread_ThreadDemo_normalThread(JNIEnv *env, jobject thiz) {
    // TODO: implement normalThread()
    pthread_create(&thread, NULL,normalCallBack,NULL);
}

运行一点按钮,成功创建子线程,日志输出"创建线程成功"

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值