下面的代码示例在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)