Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在壹般GNU/Linux 裏支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網絡堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的壹個工具。
標籤: Android
Android數據庫事務淺析
在Android應用程序開發中,經常會遇到需要進行數據庫操作的時候,有關數據庫事務處理對Android應用程序的穩定性和效率提升非常重要。
首先Android數據庫操作,特別是進行寫操作的時候非常慢,將所有操作打包成壹個事務能大大提高處理速度。
其次是保證數據的壹致性,讓壹個事務中的所有操作都成功執行,或者失敗,或者所有操作回滾。
如果您喜歡使用其他平臺(如PHP + MySQL),代碼通常在壹個功能強大的服務器上運行,壹般不會被意外中止,但在Android平臺上,您將會因為壹次又壹次的意外中止感到驚呀。Android系統會殺死apps/threads/activities等中斷數據庫的使用,電池電量會耗盡或被移除等。所以,使用數據庫事物至關重要。
實現Android數據庫事務非常簡單,只需要使用SQLiteDatabase類的三個方法即可。
◆beginTransaction();
◆setTransactionSuccessful();
◆endTransaction();
當調用endTransaction()時,所有從beginTransaction()開始的操作都會被提交。
壹個簡單的數據庫事務操作如下所示:
mDatabase.beginTransaction(); try{ //在這裏執行多個數據庫操作 //執行過程中可能會拋出異常 mDatabase.setTransactionSuccessful(); //在setTransactionSuccessful和endTransaction之間不進行任何數據庫操作 }catch(Exception e){ //當數據庫操作出現錯誤時,需要捕獲異常,結束事務 mDatabase.endTransaction(); throw e; } //當所有操作執行完成後結束壹個事務 mDatabase.endTransaction(); }
以上是關於Android數據庫事務操作的壹個簡單示例,在我們平時的Android開發中,將所有操作打包成壹個事務為壹個事務並保證事務的壹致性,可以大幅提高Android數據庫操作的效率。