編輯:關於Android編程
簡單寫一下android 對線程 的c++封裝~~~其實API已經寫得很清楚了~~
封裝 的文件 :/frameworks/base/include/utils/threads.h
這裡不討論具體實現,具體實現是和系統 相關聯的~~首先Anroid提供了幾個與直接創建線程的函數:
復制代碼 代碼如下:
inline bool createThread(thread_func_t f, void *a)
inline bool createThreadEtc(thread_func_t entryFunction,
void *userData,
const char* threadName = "android:unnamed_thread",
int32_t threadPriority = PRIORITY_DEFAULT,
size_t threadStackSize = 0,
thread_id_t *threadId = 0)
inline thread_id_t getThreadId()
下面看看Android的mutex,基本和posix的mutex很像,唯一增加了一個Mutex::Autolock,這個自動鎖用得是比較多的,在作用域裡加鎖,脫離作用域就會自動解鎖。
復制代碼 代碼如下:
class Autolock {
public:
inline Autolock(Mutex& mutex) : mpMutex(&mutex) { mutex.lock(); }
inline Autolock(Mutex* mutex) : mpMutex(mutex) { mutex->lock(); }
inline ~Autolock() { mpMutex->unlock(); }
private:
Mutex* mpMutex;
};
再看看Andorid的Condition,用法基本和posix差不多,因為本身是條件變量所以只有一個mutex參數~~
最後看看android的thread類,在實際使用的過程中都是繼承這個thread類來創建自己的thread類,並定義線程的執行內容,下面主要圍繞創建自己的線程類需要實現的幾個函數說說:
class Thread : virtual public RefBase
首先它繼承自RefBase類,一般在使用的時候要實現onFirstRef()這個父類函數,一般經典 的用法是在裡面運行Thread的run函數,這樣在創建thread的實例 的時候就開始運行這個線程了。當然也可以不在這裡執行run()函數,在其他地方執行run()函數啟動這個線程。
復制代碼 代碼如下:
virtual status_t run( const char* name = 0,
int32_t priority = PRIORITY_DEFAULT,
size_t stack = 0);
創建一個thread實例的時候,線程並沒有運行,只有在執行run()函數的時候,線程才開始真正的開始運行。
virtual status_t readyToRun();
這個函數定義thread執行前的初始化工作
virtual bool threadLoop() = 0;
這個函數是每個線程類都要實現的,在這裡定義thread的執行內容,這個函數如果返回true,則函數會不停地執行threadloop中的內容,如果這個函數返回false,則threadloop中的內容僅僅執行一次線程就會退出。
文章僅僅用於個人的學習記錄,基本上內容都是網上各個大神的傑作,此處摘錄過來以自己的理解學習方式記錄一下。 1、概述。Android平台,主要的兩種通信機制,一種
Android中判斷當前網絡是否可用 應用場景:實現判斷當前網絡是否可用當前有可用網絡,如下圖:當前沒有可用網絡,如下圖:實現步驟:1、獲取ConnectivityMan
AIDL是什麼? AIDL (Android Interface Definition Language), Android接口定義語言,Android提供的IPC (
一、介紹這個類是繼承自ImageView的,所以對於這個控件我們可以使用ImageView的所有屬性android.support.design.widget.Float