下面的代码示例在android平台下使用线程类threads.h
MyThread.h
#ifndef _MYTHREAD_H
#define _MYTHREAD_H
#include <utils/threads.h>
namespace android {
class MyThread: public Thread {
public:
MyThread();
//virtual ~MyThread();
//如果返回true,循环调用此函数,返回false下一次不会再调用此函数
virtual bool threadLoop();
};
}
#endif
MyThread.cpp
#define LOG_TAG "MyThread"
#include <utils/Log.h>
#include "MyThread.h"
namespace android {
MyThread::MyThread() :
Thread(false) {
LOGD("MyThread");
}
//MyThread::~MyThread() {
// LOGD("~MyThread");
//}
bool MyThread::threadLoop() {
LOGD("threadLoop");
return true;
}
}
main调用
Main.cpp
#define LOG_TAG "Main"
#include <utils/Log.h>
#include <utils/threads.h>
#include "MyThread.h"
using namespace android;
int main()
{
sp<MyThread> thread = new MyThread;//此处一定要这么写
thread->run("MyThread", PRIORITY_URGENT_DISPLAY);
while(1);
LOGD("main end");
return 0;
}
最后Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := MyThread.cpp \
Main.cpp \
LOCAL_SHARED_LIBRARIES :=libandroid_runtime \
libcutils \
libutils
LOCAL_MODULE := android_thread
LOCAL_MODULE_TAGS := eng
LOCAL_PRELINK_MODULE := false
#include $(BUILD_SHARED_LIBRARY)
include $(BUILD_EXECUTABLE)
分享到:
相关推荐
在 Android 平台上,C++ 内存泄漏问题的分析和定位一直是困扰开发人员的难题,因为地图渲染、导航等核心功能对性能要求很高,高德地图 APP 中存在大量的 C++ 代码。解决这个问题对于产品质量尤为重要和关键,高德...
9. **多线程与并发**:C++提供了丰富的多线程和并发工具,如std::thread、std::mutex、std::future等,这些在处理多任务并行时非常有用,尤其是在Android应用中。 10. **调试技巧**:使用NDK-GDB或Android Studio的...
本文将深入探讨如何在Android环境下为不同语言(C语言、C++、Java以及内核空间)添加并打印调用堆栈信息。 首先,让我们来看看Java语言的call stack。在Java中,我们可以利用`Thread.currentThread().getStackTrace...
1. **JNI(Java Native Interface)**:JNI是Android系统中Java与本地代码(如C++)交互的桥梁。它允许Java代码调用C/C++函数,反之亦然。在开发过程中,开发者通常使用JNI来实现性能敏感的部分,如游戏引擎、图像...
在Android平台上,C++内存泄漏是一个复杂的问题,尤其是在像高德地图这样依赖高性能的APP中。解决这个问题的关键在于有效地跟踪内存分配和栈回溯。本文档介绍了高德地图技术团队为解决Android Native内存泄漏问题所...
2. **多线程**(Thread):Boost.Thread库提供了在C++中编写多线程程序的接口,支持线程同步、互斥量、条件变量等功能,这对于实现高性能的Android应用至关重要。 3. **函数对象**(Function):Boost.Function库...
在Android系统中,线程(Thread)是执行任务的基本单元,它允许应用程序同时处理多个任务,提高程序的响应性和效率。JNI(Java Native Interface)则是Java平台提供的一种接口,允许Java代码和其他语言写的代码进行...
本篇文章将深入探讨如何使用JNI(Java Native Interface)技术,结合C++和Java,实现在Android平台上进行高效的图片高斯模糊处理,并且利用多线程优化性能。 首先,了解JNI是Java平台提供的一种技术,允许Java代码...
在Android开发中,有时我们需要利用C++(通过NDK)来编写高性能的代码,并与Java层进行交互。本文将深入探讨如何在C++线程中调用Java方法,以实现跨语言的通信。我们将基于Android Studio 3.0和Gradle 3.2.0的环境来...
在Android开发中,Native Development Kit (NDK) 允许开发者使用C++和其他原生语言编写性能关键的代码,这通常涉及到系统级操作或者利用硬件特性。为了有效地调试这些原生代码,Android Studio提供了集成的LLDB调试...
1. **Android NDK开发**:SRTP通常由C或C++编写,因此需要利用Android Native Development Kit (NDK)来编译和运行这些代码。NDK允许开发者在Android应用中使用原生代码,这在处理性能敏感的实时通信任务时非常有用。...
- **JNI**:Java Native Interface,用于连接Java代码和本地C/C++代码。 - **Native Method**:本地方法,通常是指用C/C++编写的函数,通过JNI调用。 ### Android Process 模式 在Android中,每个应用程序通常运行...
Android NDK(Native Development Kit)允许开发者使用原生代码(如C++)编写部分应用,以提高性能或利用现有库。 3. **TraderSpi.cpp, MdSpi.cpp, AutoTrader.cpp** - 这些文件可能涉及到金融交易的SPI(Service ...
在第三篇中,本书转向更底层的技术——JNI(Java Native Interface)和Android核心服务的线程模式。通过JNI,开发者可以调用本地代码,实现高性能计算。而核心服务的线程模式则关注于如何在C++层面上管理和优化线程...
在Android开发中,通常使用NDK(Native Development Kit)来编译C/C++库。确保已经安装了与Android Studio兼容的NDK版本,并配置好环境变量。检查`ndk-bundle`目录,确认NDK已正确安装。 3. **配置项目**: 进入...
在Android的JNI(Java Native Interface)环境下,开发者可以利用pthread库提供的TLS功能来实现这一目标。 首先,我们需要理解JNI。JNI是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。在Android...
- **JNI (Java Native Interface)**:Java本地接口,用于实现Java代码与本地代码之间的通信。 - **NativeMethod**:本地方法,通常是用C/C++编写的,用于实现与硬件交互的功能。 #### 四、AndroidService 与 ...
Android的Handler、Thread、AsyncTask或使用NDK的线程API都可以实现这一目的。 6. **硬件加速**:OpenCV支持GPU加速,通过OpenCL(Open Computing Language)接口,可以在兼容的设备上利用GPU进行计算,进一步提高...