android关于native中Thread类的使用源码解析

 更新时间:2025年06月20日 09:23:44   作者:开发之奋斗人生  
本文介绍了Android Native中Thread的使用,通过main.cpp启动线程,TestThread类依次调用onFirstRef、readyToRun和threadLoop方法,展示线程生命周期及执行流程,感兴趣的朋友跟随小编一起看看吧

简要概述

简单记录android中native关于thread的使用
源码位置:

system\core\libutils\include\utils\Thread.h
system\core\libutils\Threads.cpp
class Thread : virtual public RefBase
Thread继承RefBase,有以下的一些特性
// Invoked after creation of initial strong pointer/reference.
virtual void            onFirstRef();

代码记录

main.cpp

#include <utils/Log.h>
#include <pthread.h>
#include "TestThread.h"
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "hello_test"
using namespace android;
int main(int args,char** argv) {
    ALOGD("main start TestThread");
    // TestThread
    sp<TestThread> testThread = new TestThread;
    testThread->run("TestThread", PRIORITY_URGENT_DISPLAY);
    while(1){
        if(!testThread->isRunning()){
            break;
        }
    }
     ALOGD("main end");
    return 0;
}

Android.bp

cc_binary{
    name:"hello_test",
    srcs:[
        "main.cpp",
        "TestThread.cpp",
    ],
    shared_libs:[
        "liblog",
        "libutils",
    ],
    cflags: [
            "-Wno-error",
            "-Wno-unused-parameter",
        ],
}

TestThread.h

//
// Created by xxx on 25-6-8.
//
#ifndef ANDROID_TESTTHREAD_H
#define ANDROID_TESTTHREAD_H
#include <utils/threads.h>
#include <utils/Log.h>
namespace android {
    class TestThread : public Thread {
        public:
            TestThread();
            virtual void        onFirstRef();
            virtual status_t    readyToRun();
            virtual bool        threadLoop();
            virtual void        requestExit();
        private:
            int cnt = 0;
    };
}
#endif //ANDROID_TESTTHREAD_H

TestThread.cpp

//
// Created by xxx on 25-6-8.
//
#include "TestThread.h"
namespace android{
    TestThread::TestThread():Thread(false) {
        ALOGD("TestThread");
    }
    void TestThread::onFirstRef(){
        ALOGD("onFirstRef");
    }
    status_t  TestThread::readyToRun(){
        ALOGD("readyToRun");
        return OK;
    }
    bool TestThread::threadLoop() {
        cnt++;
        ALOGD("threadLoop cnt = %d",cnt);
        if(cnt >= 20){
           return false;
        }
        return true;
    }
    void  TestThread::requestExit(){
        ALOGD("requestExit");
    }
}

日志打印如下所示

06-14 22:29:28.500  2094  2094 D hello_test: main start TestThread
06-14 22:29:28.500  2094  2094 D hello_test: TestThread
06-14 22:29:28.500  2094  2094 D hello_test: onFirstRef
06-14 22:29:28.501  2094  2096 D hello_test: readyToRun
06-14 22:29:28.502  2094  2096 D hello_test: threadLoop cnt = 1
...
06-14 22:29:28.505  2094  2096 D hello_test: threadLoop cnt = 20
06-14 22:29:28.505  2094  2094 D hello_test: main end

函数执行顺序 TestThread->onFirstRef->readyToRun->threadLoop

到此这篇关于android关于native中Thread类的使用的文章就介绍到这了,更多相关android native Thread类使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android Keystore签名文件全解析与安全防护

    Android Keystore签名文件全解析与安全防护

    Keystore是存储加密密钥、证书和签名信息的文件(常见格式为.keystore 和.jks),是Android应用签名的核心,用于验证应用来源的可靠性,保障分发过程中的完整性,本文给大家介绍Android Keystore签名文件全解析与安全防护,感兴趣的朋友一起看看吧
    2025-08-08
  • Android实现底部切换标签

    Android实现底部切换标签

    这篇文章主要为大家详细介绍了Android实现底部切换标签,嵌套Fragment,方便自定义布局,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android性能优化getResources()与Binder导致界面卡顿优化

    Android性能优化getResources()与Binder导致界面卡顿优化

    这篇文章主要为大家介绍了Android性能优化getResources()与Binder导致界面卡顿优化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Android自定义柱状图表的方法实例

    Android自定义柱状图表的方法实例

    柱状图是我们在日常开发中经常会用到的一种图表,下面这篇文章主要给大家介绍了关于Android如何自定义柱状图表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-05-05
  • android 震动和提示音的实现代码

    android 震动和提示音的实现代码

    这篇文章主要介绍了android 震动和提示音的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Android编程实现在底端显示选项卡的方法

    Android编程实现在底端显示选项卡的方法

    这篇文章主要介绍了Android编程实现在底端显示选项卡的方法,涉及Android界面线性布局、相对布局及选项卡设置相关操作技巧,需要的朋友可以参考下
    2017-02-02
  • Android TextView设置背景色与边框的方法详解

    Android TextView设置背景色与边框的方法详解

    本篇文章是对Android中TextView设置背景色与边框的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android屏幕适配工具类 Android自动生成不同分辨率的值

    Android屏幕适配工具类 Android自动生成不同分辨率的值

    这篇文章主要为大家详细介绍了Android屏幕适配工具类,Android自动生成不同分辨率的值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Android实现离线缓存的方法

    Android实现离线缓存的方法

    离线缓存就是在网络畅通的情况下将从服务器收到的数据保存到本地,当网络断开之后直接读取本地文件中的数据。本文给大家介绍Android实现离线缓存的方法,需要的朋友参考下
    2016-03-03
  • Android 6.0指纹识别App开发案例

    Android 6.0指纹识别App开发案例

    这篇文章主要为大家详细介绍了Android 6.0 指纹识别App开发案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09

最新评论