『壹』 android ormlite 什麼是單例
先去ORMLite官網下載jar包,對於Android為:ormlite-android-4.48.jar 和 ormlite-core-4.48.jar ;
ps:訪問不了的朋友,文章末尾會把jar、源碼、doc與本篇博客例子一起打包提供給大家下載。
2、配置Bean類
有了jar,我們直接新建一個項目為:zhy_ormlite,然後把jar拷貝到libs下。
然後新建一個包:com.zhy.zhy_ormlite.bean專門用於存放項目中的Bean,首先新建一個User.java
[java] view plain
package com.zhy.zhy_ormlite.bean;
import com.j256.ormlite.field.DatabaseFi
『貳』 android sqlite框架哪個好
orm 的 db 工具類,簡化建表、查詢、更新、插入、事務、索引的操作
1. greenDAO
Android Sqlite orm 的 db 工具類
項目地址:https://github.com/greenrobot/greenDAO
文檔介紹:http://green-orm.com/documentation/
官網網址:http://green-orm.com/
特點:(1) 性能佳
(2) 簡單易用的 API
(3) 內存小好小
(4) 庫大小小
ActiveAndroid
Android Sqlite orm 的 db 工具類
項目地址:https://github.com/pardom/ActiveAndroid
文檔介紹:https://github.com/pardom/ActiveAndroid/wiki/_pages
Sprinkles
Android Sqlite orm 的 db 工具類,比較顯著的特點就是配合 https://github.com/square/retrofit 能保存從伺服器獲取的數據
項目地址:https://github.com/emilsjolander/sprinkles
文檔介紹:http://emilsjolander.github.io/blog/2013/12/18/android-with-sprinkles/
Realm
移動端的資料庫,適用於 Phone、Tablet、Wearable,支持 ORM,線程安全、支持連表及資料庫加密,比 SQLite 性能更好
項目地址:https://github.com/realm/realm-java
文檔介紹:http://realm.io/docs/java/0.72.0/
ormlite-android
項目地址:https://github.com/j256/ormlite-android
文檔介紹:http://ormlite.com/sqlite_java_android_orm.shtml
Schematic
根據 SQLite 生成 ContentProvider
項目地址:https://github.com/SimonVT/schematic
DBFlow
Android SQLite ORM 工具庫。綜合了 Active Android, Schematic, Ollie,Sprinkles 等庫的優點;通過註解實現,性能好;能生成 ContentProvider。
項目地址:https://github.com/Raizlabs/DBFlow
文檔介紹:https://github.com/Raizlabs/DBFlow#usage-docs
都可以試試,都很好,但好的不一定就適合你,有的簡單實用,有的功能全面,有的效率更高,看你更注重哪方面了。
希望採納~
『叄』 android 資料庫框架哪個好
請看sqllite增刪改查的小例子,例子來自於android學習手冊,裡面有源碼。android學習手冊包含9個章節,108個例子,源碼文檔隨便看,例子都是可交互,可運行,源碼採用android studio目錄結構,高亮顯示代碼,文檔都採用文檔結構圖顯示,可以快速定位。360手機助手中下載,圖標上有貝殼
先介紹一下ORM的概念,以前也一直聽說,不過沒詳細了解啥意思。其全稱叫做對象關系映射(Object Relation Mapping),是一種程序設計技術,用於實現面向對象編程語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創建了一個可在編程語言里使用的「虛擬對象資料庫」。
面向對象是從軟體工程基本原則(如耦合、聚合、封裝)的基礎上發展起來的,而關系資料庫則是從數學理論發展而來的. 兩者之間是不匹配的.而ORM作為項目中間件形式實現數據在不同場景下數據關系映射. 對象關系映射是一種為了解決面向對象與關系資料庫存在的互不匹配的現象的技術.ORM就是這樣而來的。
下面先列出幾個ORM框架:ORMLite、green、ormndroid、androrm、ActiveAndroid
其中以前最早接觸過ormlite,GreenDao了解過,其他的幾個真沒怎麼見過。所以這里主要介紹ormlite和GreenDao。
最開始現在stackoverflow輸入sqlite orm關鍵字,搜索出了一些相關的文章:http://stackoverflow.com/search?q=sqlite+orm,你會發現很有趣的是,ormlite的作者Gray和greenDao的開發團隊green robot同時出現在一些帖子中,向提問者推薦他們的框架。當然也會有一些熱心的朋友推薦ormdroid。其實不論在stackoverflow上還是官網上,greenDao的團隊的比較都是針對ORMLite的,可見,其主要的競爭對手,或許稱互相促進者更合適,畢竟他們沒有什麼商業利益,完全開源。所以開源的ORM框架中,ormLite和greenDao是最火的。其它幾種就不做比較,有興趣的朋友可以到官網看下。下面對ORMLite和GreenDao做個簡單的比較:
ormlite
基於註解和反射的的方式,導致ormlite性能有著一定的損失(註解其實也是利用了反射的原理)
優點:
文檔較全面,社區活躍,有好的維護,使用簡單,易上手。
缺點:
基於反射,效率較低
GreenDao
官網中明確指明了其首要設計目標:
Maximum performance (probably the fastest ORM for Android):系能最大化
Easy to use APIs:便於使用
Highly optimized for Android:對於Android高度優化
Minimal memory consumption:最小化內存開銷
Small library size, focus on the essentials:較小的文件體積,只集中在必要的部分上。
優點:
效率很高,插入和更新的速度是sqlite的2倍,載入實體的速度是ormlite的4.5倍。官網測試結果:http:/
/green-orm.com/features/
文件較小(<100K),佔用更少的內存 ,但是需要create Dao,
操作實體靈活:支持get,update,delete等操作
缺點:
學習成本較高。其中使用了一個java工程根據一些屬性和規則去generate一些基礎代碼,類似於javaBean但會有一些規則,另外還有QueryBuilder、Dao等API,所以首先要明白整個過程,才能方便使用。沒有ORMLite那樣封裝的完整,不過greenDao的官網上也提到了這一點,正是基於generator而不是反射,才使得其效率高的多。
另外GreenDao支持Protocol buffers協議數據的直接存儲 ,如果通過protobuf協議和伺服器交互,不需要任何的映射。
Protocol Buffers協議:以一種高效可擴展的對結構化數據進行編碼的方式。google內部的RPC協議和文件格式大部分都是使用它。
RPC:遠程過程調用(Remote Procere Call,RPC)是一個計算機通信協議,它是一種通過網路從遠程計算機程序上請求服務,而不需要了解底層網路技術的協議。
可能因為GreenDao的效率高,而且需要學習成本高點,所以個人還是有興趣學一學的。接下來會發布一些GreenDao更詳細的文章,有對官方文檔的翻譯還有代碼的簡單講解。
或許以上內容很簡單,只是簡單的介紹了下,對其它幾個框架並沒有做更多的介紹,有了解的朋友可以提出來,可以提出來,大家一起探討下。
『肆』 Android 開發一般都使用什麼框架
開源框架推薦:
網路
* [okhttp](square/okhttp · GitHub)
* [android-async-http](loopj/android-async-http · GitHub)
事件匯流排
* [otto](square/otto · GitHub)
* [EventBus](greenrobot/EventBus · GitHub)
依賴注入
* [Dagger](square/dagger · GitHub)
* [RoboGuice](roboguice/roboguice · GitHub)
* [ButterKnife](JakeWharton/butterknife · GitHub)
圖片
* [Fresco](facebook/fresco · GitHub)
* [Glide](bumptech/glide · GitHub)
* [picasso](square/picasso · GitHub)
資料庫
* [greenDao](greenrobot/greenDAO · GitHub)
* [ormlite](j256/ormlite-android · GitHub)
* [LitePal](LitePalFramework/LitePal · GitHub)
響應式編程
* [RxJava](ReactiveX/RxJava · GitHub)
* [RxAndroid](ReactiveX/RxAndroid: RxJava bindings for An...)
日誌輸出
* [logger](orhanobut/logger: Simple, pretty and powerf...)
* [android-CLog](liaohuqiu/android-CLog)
* [KLog](ZhaoKaiQiang/KLog · GitHub)
* [LogUtils](pengwei1024/LogUtils · GitHub)
崩潰統計平台
* [騰訊bugly](騰訊Bugly - Android Crash(崩潰)_iOS Crash(崩潰)_ANR_卡頓)
* [Crittercism](Crittercism - Developer Home)
* [Crashlytics](The most powerful, yet lightest weight crash reporting solution for iOS and Android
developers.)
架構設計
這個肯定得了解下MVC,MVP,MVVM還有設計模式這些,這里有幾個開源項目推薦下
philm
Movie collection and information app for Android.
Github地址:chrisbanes/philm: Movie collection and info...
SimpleNews
基於Material Design和MVP的新聞客戶端
Github地址:GitHub - liuling07/SimpleNews: 基於Material Design和MVP的新聞客戶端
GankDaily
A application show technical information every working days, use MVP pattern.
Github地址:maoruibin/GankDaily
SimplifyReader
Github地址:GitHub - SkillCollege/SimplifyReader: 一款基於Google Material Design設計開發的Android客戶端,包括新聞簡讀,圖片瀏覽,視頻爽看 ,音樂輕聽以及二維碼掃描五個子模塊。
NBAPlus
Github地址:SilenceDut/NBAPlus · GitHub
PhotoNoter
Github地址:yydct/PhotoNoter
Mei
Github地址:drakeet/Mei: gank.io unofficial client, RxJava & Retrofit
DebugDrawer
Android Debug Drawer for faster development
Github地址:palaima/DebugDrawer · GitHub
ViewServer
Local server for Android's HierarchyViewer
Github地址:romainguy/ViewServer · GitHub
AndroidWiFiADB
IntelliJ/AndroidStudio plugin which provides a button to connect your Android device over WiFi to install, run and debug your applications without a USB connected.
『伍』 Android 要怎樣實現持久化登錄
Android中內置了sqlite,但是常用的開發語言java是面向對象的,而資料庫是關系型的,二者之間的轉化每次都很麻煩(主要是我對 sql語言不熟悉)。而Java Web開發中有很多orm框架,但是想直接放到Android上用有些麻煩。嘗試了一下找Android的orm框架,說實話還有好幾個。
實現考慮的是:androrm
參考官網:http://androrm.the-pixelpla.net/
一個是依賴包:Apache Commons - Lang (2.6)
另外一個就是主包:androrm.jar 不管怎麼下載的都不能使用...
然後有考慮了一下db4o
官網:http://www.db4o.com/
官網上的介紹說是已經支持Android了,但是我一是覺得包有點大,而是覺得速度有點慢
最後看到的就是ormlite
官網:http://ormlite.com/
一共兩個包:一個是ormlite-core-4.24.jar,另一個是ormlite-android-4.24.jar
從以下網址可以下載到:http://ormlite.com/releases/
下面按照慣例來個Hello world
新建Android項目:HelloOrmLite
『陸』 android開發一般都使用什麼框架
Android開發框架介紹
編輯文檔
學分 +2
開發框架方麵包含基本的應用功能開發、數據存儲、網路訪問這三大塊:
一、應用方面
一般而言一個標準的Android程序由如下4部分組成即Activity、Broadcast Intent Receiver、Service、Content Provider: 1. Activity是最頻繁、最基本的模塊,在Android中,一個Activity就是手機上一屏,相當於一個網頁一樣,所不同的是,每個Activity運行結束了,有個返回值,類似一個函數一樣。Android系統會自動記錄從首頁到其他頁面的所有跳轉記錄並且自動將以前的Activity壓入系統堆棧,用戶可以通過編程的方式刪除歷史堆棧中的Activity Instance。
Activity類中主要是跟界面資源文件關聯起來(res/layout目錄下的xml資源,也可以不含任何界面資源),內部包含控制項的顯示設計、界面交互設計、事件的響應設計以及數據處理設計、導航設計等application設計的方方面面。 2. Broadcast Intent Receiver
Intent提供了各種不同Activity進行跳轉的機制,譬如如果從A activity跳轉到B activity,使用Intent來實現如下: Intent in = new Intent(A.this, B.class); startActivity(in);
BroadcastReceiver提供了各種不同的Android應用程序進行進行進程間通訊的機制,譬如當電話呼叫來臨時,可以通過BroadcastReceiver發布廣播消息。對於用戶而言,BroadcastReceiver是不透明的,用戶無法看到這個事件,BroadcastReceiver通過NotificationManager來通知用戶這些事件發生了,它既可以在資源AndroidManifest.xml中注冊,也可以在代碼中通過Context.registerReceiver()進行注冊,只要是注冊了,當事件來臨的時候,即時程序沒有啟動,系統也在需要的時候會自動啟動此應用程序;另外各應用程序很方便地通過Context.sendBroadcast()將自己的事情廣播給其他應用程序;
3. Service,跟Windows當中的Service完全是一個概念,用戶可以通過startService(Intent service)啟動一個Service,也可通過Context.bindService來綁定一個Service.
4. Content Provider,由於Android應用程序內部的數據都是私有的,Content Provider提供了應用程序之間數據交換的機制,一個程序可以通過實現一個ContentProvider的抽象介面將自己的數據暴露出去,並且隱蔽了具體的數據存儲實現,標準的ContentProvider提供了基本的CRUD(Create,Read,Update,Delete)的介面,並且實現了許可權機制,保護了數據交互的安全性; 一個標準的Android應用程序的工程文件包含如下幾大部分: -> Java源代碼部分(包含Activity),都在src目錄當中;
-> R.java文件,這個文件是Eclipse自動生成與維護的,開發者不需要修改,提供了Android對的資源全局索引; -> Android Library,這個是應用運行的Android庫;
-> assets目錄,這個目錄裡面主要用與放置多媒體等一些文件;
-> res目錄,放置的是資源文件,跟VC中的資源目錄基本類似,其中的drawable包含的是圖片文件,layout裡麵包含的是布局文件,values目錄裡面主要包含的是字元串(strings.xml)、顏色(colors.xml)以及數組(arrays.xml)資源;
-> AndroidManifest.xml,這個文件異常重要,是整個應用的配置文件,在這個文件中,需要聲明所有用到的Activity、Service、Receiver等。
『柒』 怎樣搭建一個android開發框架
搭建Android開發環境
准備工作:下載Eclipse、JDK、Android SDK、ADT插件
下載地址:Eclipse:http://www.eclipse.org/downloads/
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html
Android SDK:http://developer.android.com/sdk/index.html
ADT:http://developer.android.com/tools/sdk/eclipse-adt.html
1、安裝和配置JAVA開發環境:
①把准備好的Eclipse和JDK安裝到本機上(最好安裝在全英文路徑下),並給JDK配置環境變數,其中JDK的變數值為JDK安裝路徑的根目錄,如我的為:D:\Program Files\Java\jdk1.7.0_02;
②打開命令提示符(cmd),輸入java -version命令,顯示如下圖則說明JAVA環境變數已經配置好了。
2、安裝ADT插件:
①打開已安裝好的Eclipse,選擇菜單欄上的「Help」->在彈出的下拉框中單擊選擇「Install new software...」;
②在新打開的對話框中我們完全可以直接在"Work with"中輸入:https://dl-ssl.google.com/android/eclipse/在線安裝ADT插件,但由於Google的伺服器搭建在國外,所以通過這種方式安裝起來會比較慢,而且可能會出現人品差死活裝不上的情況,所以不推薦在線安裝。
③我推薦直接通過下載好的ADT插件壓縮包進行安裝(此種方式可以在離線環境下進行)。具體步驟是:在新打開的對話框中點擊「Add」按鈕->在打開的對話框中點擊「Archive」按鈕選擇之前已經下載好保存在本地硬碟的ADT插件壓縮包,至於上面的「Name」可以隨便取,這只是一個代號而已,沒什麼實際作用。
④在上一步中點擊「Ok」按鈕後我們會發現中間的空白處出現了兩行復選框,單擊"Select All"按鈕選中所有的復選框,這步過後一路「Next」,需要「Accept」的就選中「Accept」,直到點擊「Finish」結束,這樣ADT插件就安裝好了。整個過程需要的時間視機器性能而定。安裝好ADT插件後,Eclipse的工具欄會出現一排Android的圖標,如下圖:
3、安裝SDK:
①把下載好的Android SDK安裝到本機上(最好安裝在全英文路徑下),並為Android SDK配置環境變數。Android SDK的環境變數值為SDK安裝目錄下的platform-tools文件夾和tools文件夾子目錄路徑,如我的分別為:E:\My Studying\Android\android-sdk\platform-tools、E:\My Studying\Android\android-sdk\tools,在變數值中,兩個路徑用逗號隔開。
②打開命令提示符(cmd),分別輸入android -h和adb命令,顯示如下圖則說明Android SDK環境變數已經配置好了。
③打開Android SDK的安裝目錄,雙擊 "SDK Manager"->在打開的窗口中先選擇你需要安裝的SDK版本,其中「Status」表示該SDK包是否安裝,如我選的是「Android2.2(API 8)」(我的之前已經安裝過了,所以「Status」為「Installed」)->再點擊「Install packages...」按鈕,在彈出來的窗口中最好選「Accept All」這樣才能安裝你剛才選的所有的包->最後點「Install」按鈕就開始安裝了,整個過程會很慢,這需要你的耐心。
另外我們還可以通過在Eclipse上的工具欄中點擊下圖指示的圖標打開「SDK Manager」然後進行安裝,這樣和上面的SDK安裝方式一樣,就不累述了。
④最後再選擇Eclipes主菜單上的"Windows"->選擇"preferrnces";
⑤在彈出來的對話框中選中左邊欄的「Android」->通過右側的「Browse...」按鈕選擇SDK的安裝路徑根目錄->點擊最下方的「Ok」按鈕,這樣SDK就在Eclipse上載入成功了。
4、創建Android模擬器(AVD):
①打開Eclipse->在Eclipse的工具欄上單擊下圖指示的圖標打開「Android Virsual Device Manager」窗口;
②在「Android Virsual Device Manager」窗口單擊「New」按鈕->在彈出來的窗口中"Name"可以隨便取;「Target」指模擬器的系統版本;「SD Card」的"size"是指手機存儲卡的大小,只要你不在模擬器上裝太多的應用,一般給個二三十MB就夠了;「Skin」是指屏幕的解析度大小,其中「Built in」是一般手機常用標准屏幕解析度大小,而「Resolution」是自定義屏幕解析度大小,具體做法,可以根據自身情況選擇。->一切設置好後點擊「Create AVD」,這時一個模擬器就創建好了。如果有必要,我們可以創建多個模擬器用於測試時使用。
附:Android模擬器型號以及其對應的解析度大小:
Standard Width Height DAR Pixeis
HVGA 480 * 320 3:2 153,600
QVGA 320 * 240 4:3 76,800
WQVGA400 400 * 240 5:3 96,000
WQVGA432 432 * 240 9:5 103,680
WVGA800 800 * 480 5:3 384,000
WVGA852 854 * 480 409,920
至此為止,在Eclipse上就已經成功搭建Android開發環境了。
『捌』 android studio怎麼引入ormlitesqliteopenhelper的jar
首先說明一下,本人已經使用ormlite-Android做過兩個大型的項目開發,很久以來就想對此資料庫做一些總結,正好今天有空就寫出來:
1. 首先去官網http://ormlite.com/看官方說明,也可以去http://ormlite.com/releases/下載兩個包:一個是ormlite-core-4.24.jar,另一個是ormlite-android-4.24.jar
2. 下載完2個jar包後導入項目中,在此不多說,大家都懂的
3.前奏工作完成,下面就是怎麼去搭建框架使用了,首先說明本人做過一段時間的web開發,所以喜歡用mvc模式,下面將通過代碼來說明:
1).建立自己的DatabaseHelper類
[java] view plain
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
// name of the database file for your application -- change to something
// appropriate for your app
private static final String DATABASE_NAME
『玖』 android app開發中常用到哪些開源框架
在前面的課程中,隨著對Android體系的了解,已經可以進行正常的Android應用開發了。在Android開發中,同其他工程開發一樣,也經常使用一些提高效率的框架,本文我們做一個對比。這些框架,既包括:網路請求框架、也包括圖片載入庫框架、還包括資料庫操作等一些框架,總之,了解和熟悉這些框架,會對自己的開發效率有很大的提升和幫助。
網路請求框架
1、okHttp
在前文的學習中,我們已經了解過okHttp,是一個常用的網路載入庫。
2、Retrofit
介紹
Retrofit是一個很不錯的網路請求庫,該庫是square開源的另外一個庫,之前的okhttp也是該公司開源的。
Retrofit是基於OkHttp封裝的RESTful網路請求框架,使用註解的方式配置請求。優點是速度快,使用註解,callback函數返回結果自動包裝成Java對象。官方自己的介紹說:
A type-safe REST client for Android and Java
該網路框架在github上的地址如下:https://square.github.io/retrofit/
要求
Retrofit支持的http方式方式包括 GET/POST/PUT/DELETE/HEAD/PATCH,Retrofit要求Java的版本是1.8+,Android應用的API版本應該在21+。
依賴
使用Retrofit庫,和其他庫一樣,首先需要設置依賴,依然是在build.gradle文件中設置依賴:
//添加retrofit庫依賴
implementation 『com.squareup.retrofit2:retrofit:2.1.0』
//添加gson轉換器
implementation 『com.squareup.retrofit2:converter-gson:2.1.0』
使用
通過一個例子,我們可以來演示該框架的使用步驟:
1、定義請求介面,即程序中都需要什麼請求操作
public interface HttpServices {
/**
獲取頭條新聞
@param type 新聞類型
@param key apiKey
@return
*/
@GET(「toutiao/index」)
Call getNewsList(@Query(「type」) String type, @Query(「key」) String key);
}
2、實例化Retrofit對象,使用的Builder的模式創建,如下代碼所示:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_API)
.addConverterFactory(GsonConverterFactory.create())
.build();
注意,這里設置結構體轉換器,是可以直接把網路請求回來的數據轉換為Java結構體,這里設置的Gson解析器,因此要引入相應的轉換器支持庫。
3、得到介面對象,自己創建的全局的介面對象,並調用相應的介面,得到一個類似於請求Call對象。如下所示:
HttpServices httpServices = retrofit.create(HttpServices.class);
Call newsListCall = httpServices.getNewsList(「top」, Constants.API_KEY);
4、加入到請求隊列中,並設置回調方法:
newsListCall.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
//網路請求成功的回調方法
List list = Arrays.asList(response.body().result.data);
Log.i(「TAG」, 「請求成功:」 + String.valueOf(list.size()));
NewListAdapter adapter = new NewListAdapter(RetrofitActivity.this);
adapter.setmData(list);
mRecyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call call, Throwable throwable) {
//網路請求失敗的回調方法
Log.i(「TAG」, 「請求失敗:」 + throwable.getMessage());
}
});
其他界面操作和之前的Android中的內容一致。
3、RxJava
簡單來說,用來處理事件和非同步任務,在很多語言上都有實現,RxJava是Rx在Java上的實現。
原理
RxJava最基本的原理是基於觀察者模式來實現的。通過Obserable和Observer的機制,實現所謂響應式的編程體驗。
特點
RxJava在編程中的實現就是一種鏈式調用,做了哪些操作,誰在前誰在後非常直觀,邏輯清晰,代碼維護起來非常輕松。
RxJava也是一個在github上的庫,githubhttp://www.xingkongmj.com/news/id/62.html地址如下:https://github.com/ReactiveX/RxJava
基於此,還有一個RxAndroid,github地址如下:https://github.com/ReactiveX/RxAndroid
RxJava和RxAndroid的關系
RxAndroid是RxJava的一個針對Android平台的擴展,主要用於 Android 開發。
基本概念
RxJava 有四個基本概念:
Observable:可觀察者,即被觀察者Observer:觀察者subscribe:訂閱事件
這四個概念之間的邏輯關系是:Observable和Observer通過subscribe方法實現訂閱關系,從而Observable可以在需要的時候發出事件來通知Observer。
事件
RxJava 的事件回調方法主要包含以下幾個:
onNext:普通的事件onCompletedhttp://dachang.net/432717.html:事件隊列完結。RxJava 不僅把每個事件單獨處理,還會把它們看做一個隊列。RxJava 規定,當不會再有新的 onNext 發出時,需要觸發 onCompleted 方法作為標志。:事件隊列異常。在事件處理過程中出異常時, 會被觸發,同時隊列自動終止,不再允許再有事件發出。在一個正確運行的事件序列中, onCompleted和 有且只有一個,並且是事件序列中的最後一個。需要注意的是,onCompleted() 和 () 二者也是互斥的,即在隊列中調用了其中一個,就不應該再調用另一個。
資料庫操作框架
在開發時,本地資料庫可以起到緩存數據和存儲業務數據的作用,隨著技術的成熟,不斷推出了有很多關於資料庫的操作框架。比較常見的資料庫操作框架有諸如:GreenDao,OrmLite 和 ActiveAndroid,DBFlow等。
GreenDAO
GreenDAO是一個開源的 Android ORM(「對象/關系映射」),通過 ORM(稱為「對象/關系映射」),在我們資料庫開發過程中節省了開發時間!
GreenDao的官方文檔地址如下:http://www.xingkongmj.com/news/id/63.html
GreenDao的作用
通過 GreenDao,我們可以更快速的操作資料庫,我們可以使用簡單的面相對象的API來存儲,更新,刪除和查詢 Java 對象。這款資料庫操作框架的特點是:
高性能,在官方的統計數據中,GreenDao在GreenDao,OrmLite 和 ActiveAndroid三個框架中,讀、寫、更新操作效率均表現第一。易於使用的強大 API,涵蓋關系和連接。內存消耗較小。安全:greenDAO 支持 SQLCipherhttp://www.xingkongmj.com/news/id/64.html,以確保用戶的數據安全;
核心概念
GreenDao 的核心類有三個:分別是:
DaoMaster:保存資料庫對象(SQLiteDatabase)並管理特定模式的 DAO 類(而不是對象)。它有靜態方法來創建表或刪除它們。它的內部類 OpenHelper 和DevOpenHelper 是 SQLiteOpenHelper 實現,它們在 SQLite 資料庫中創建模式。DaoSession:管理特定模式的所有可用 DAO 對象,您可以使用其中一個getter方法獲取該對象。DaoSession 還提供了一些通用的持久性方法,如實體的插入,載入,更新,刷新和刪除。XXXDao:數據訪問對象(DAO)持久存在並查詢實體。對於每個實體,greenDAO 生成DAO。它具有比 DaoSession 更多的持久性方法。Entities:可持久化對象。通常, 實體對象代表一個資料庫行使用標准 Java 屬性(如一個POJO 或 JavaBean )。
使用
按照官方的文檔和github上的說明可以實現green的使用。
首先進行的是依賴,對於greenDao,有兩個地方需要設置,分別是項目根目錄中的 build.gradle,還有mole中的build.gradle。
classpath 『org.greenrobot:green-gradle-plugin:3.3.0』 // add plugin
在項目根目錄中的build.gradle目錄中寫這句話的意思是添加greenDao的插件。
在項目mole中的build.gradle中也需要進行配置,有兩個地方需要設置,如下圖所示:
apply plugin: 『org.greenrobot.greenhttp://www.xingkongmj.com/news/id/66.html』 //開頭加入該代碼
dependences{
implementation 『org.greenrobot:green:3.2.0』
}
然後就可以使用了。
bean實體
可以在項目中創建自己業務需要的實體類,並通過註解來設置是實體類,欄位約束等內容。然後點擊Android Studio中的Make mole,即可自動生成XXXDao代碼,以此來方便開發者的操作。生成的XXXDao類,不可修改和編輯,是自動生成的。
ORMLite
ORMLite框架是另外一款Android開發中可以使用的資料庫操作框架。該框架的文檔地址如下:https://ormlite.com/sqlite_java_android_orm.shtml
該框架的文檔准備的不是特別友好,此處不再贅述。
總結,所有的框架原理幾乎都相差不大,只是操作有所差異。
視圖注入框架
在Android項目開發過程中,有太多的頁面需要布局完成,同時在代碼中需要些大量的findviewbyid的操作,來實現控制項的解析。於是就有人想能否輕松一些,解放雙手節省時間,干一些其他有意義的事情,於是ButterKnife就來了。
ButterKnife是一個專注於Android系統的View注入框架,可以減少大量的findViewById以及setOnClickListener代碼,可視化一鍵生成。
該項目在github上的地址如下:http://www.xingkongmj.com/news/id/65.html
這個框架的優勢也非常明顯:
強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率方便的處理Adapter里的ViewHolder綁定問題運行時不會影響APP效率,使用配置方便代碼清晰,可讀性強
使用
首先是設置依賴,在build.gradlehttp://dachang.net/432714.html中進行依賴設置:
implementation 『com.jakewharton:butterknife:10.2.1』
annotationProcessor 『com.jakewharton:butterknife-compiler:10.2.1』
需要注意,該框架要求Java環境1.8版本以上,SDK版本在26以上,因此在使用到的mole中的build.graldle文件中,還必須添加如下代碼配置:
apply plugin: 『com.jakewharton.butterknife』
android{
//…
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//…
}
另外,還必須在項目根目錄中的build.gradle文件中,添加該框架的插件,如下圖所示:
dependences{
classpath 『com.jakewharton:butterknife-gradle-plugin:10.2.1』
}
然後即可在代碼中進行使用了。
在使用該框架的頁面進行綁定諸如,如下所示代碼:
ButterKnife.bind( this) ;
主要的功能
@BindView():控制項id 註解,解放雙手,不用再每個控制項都寫一遍findviewById@BindViews():多個控制項id 的註解,括弧內使用花括弧包括多個id即可,中間用,分割開在Fragment中使用,綁定Fragment。@BindString():綁定字元串@BindArray:綁定數組@BindBitmap:綁定bitmap資源@OnClick、@OnLongClick:綁定點擊事件和長按事件…還有很多
插件安裝
如果是頁面很復雜,一個一個寫BindView也很費勁,在Android Studio中,可以安裝一個ButterKnife的插件,安裝該插件後,可以在Studio中直接將對應的布局中的所有控制項均給自動生成。
注意,在進行自動生成時,滑鼠要放在布局文件上。
注意事項
ButterKnife框架在使用時,要求的版本比較高,包括Java的版本也有限制。因此,如果計劃在項目中使用,要提前做好預備工作,以防止對已有項目和業務帶來不必要的麻煩,反而影響工作進度。