「錘子」使用♂手冊
What is a Chuizi
「錘子」是一個Android元件化快速開發框架
特徵
元件化開發通用框架, 高度解耦,方便配置
提供Base 基類(BaseActivity, BaseFragment, BaseApplication )
提供MVP 基類(IModel, IVIew, IPresenter )並提供一鍵生成錘子模版
高度可自定義化 ,可以自由的對 Retoift, Okhttp, RxCache, Gson 等框架的特有屬性進行自定義化配置, 可在不修改框架原始碼的情況下向 BaseApplication, BaseActivity, BaseFragment 的對應生命週期中插入任意程式碼, 並且框架獨有的 ConfigModule 配置類, 可在不修改框架原始碼的情況下為框架輕鬆擴充套件任何新增功能
提供了第三方框架(Retoift, Okhttp, RxCache, Gson 等)的預設的配置,通過簡單配置即可上手開發
封裝RxLifeCycle , 可在不繼承 RxLifeCycle 提供的 Activity 和 Fragment 的情況下, 正常使用 RxLifeCycle 的所有功能, 且使用方式不變
提供全域性配置Module , 可用 Dagger2 在任意位置注入自定義引數, 可輕鬆擴充套件任意自定義引數
全域性使用 Dagger2 管理 (將所有模組使用 Dagger2 連線起來)
提供全域性監聽整個 App 所有 Activity 以及 Fragment 的生命週期 (包括三方庫)配置方法, 並可向其生命週期內插入任意程式碼
提供【AppHttpHandler】實現全域性監聽 Http Request(請求引數, Headers ...), Response (伺服器返回的結果, Headers, 耗時 ...)等資訊(包括 Glide 的請求), 可解析 json 後根據狀態碼做相應的全域性操作以及資料加密, Cookie 管理等操作
提供RxTransformer轉換器簡化網路請求生命週期繫結和執行緒轉換操作
封裝 【AppManager】實現全域性管理所有 Activity (包括三方庫的 Activity), 可實現在整個 App 任意位置, 退出所有 Activity, 以及拿到前臺 Activity 做相應的操作(如您可以在 App 任何位置做彈出 Dialog 的操作)
封裝【DataManager】統一管理網路請求和資料快取,以及快捷的本地資料儲存
封裝全域性 Rxjava 錯誤處理, 錯誤後自動重試, 捕捉整個應用的所有錯誤(手動呼叫)
封裝圖片載入類【 ImageLoader 】使用策略模式和建造者模式, 方便切換圖片載入框架和功能擴充套件 (提供了glide載入策略作為預設方案)
網路請求日誌列印封裝(提供解析後的伺服器的請求資訊和伺服器的響應資訊, 按可自定義的任意格式輸出列印日誌)
元件的快取機制封裝(框架內可快取內容的元件都提供有介面方便自定義)
提供錘子工具集(常用工具類,UI,字元,圖片,日誌,壓縮,判斷式等)
TODO
新增更多的UI部件和介面卡
封裝leakcanary
使用的庫
使用MVP架構
Dagger2 Google出品的依賴注入框架,通過Apt編譯時生成程式碼,效能優於使用執行時反射技術的依賴注入框架.
RxJava 提供優雅的響應式Api解決非同步請求以及事件處理.
RxAndroid 為Android提供響應式Api.
Rxlifecycle 在Android上使用rxjava都知道的一個坑,就是生命週期的解除訂閱,這個框架通過繫結activity和fragment的生命週期完美解決.
RxCache 是使用註解為Retrofit加入二級快取(記憶體,磁碟)的快取庫.
RxPermissions 用於處理Android執行時許可權的響應式庫.
Retrofit Okhttp封裝庫,極大的減少了http請求的程式碼和步驟.
Okhttp 網路請求庫
GsonGoogle 官方的Json Convert框架.
Butterknife view注入框架.
AndroidEventBus 一個輕量級使用註解的Eventbus.
Timber Log框架容器
Glide 圖片載入庫
Hawk 本地輕量儲存庫,只需一行程式碼 , 能存任何資料型別
16. Green Dao 資料庫
開發準備
1.匯入jar包
2.引用config.gradle
本框架提供一個含有大量第三方庫的 config.gradle 檔案 (裡面的所有第三方庫並不會全部被引入到專案中, 只是作為變數方便專案中多個位置進行引用, 特別適用於多 Module 的專案), 用於第三方庫的版本管理, 將 config.gradle複製進根目錄, 並在專案的頂級 build.gradle中新增如下程式碼引用它
apply from: "config.gradle" //這裡表示引用config.gradle檔案
2.5推薦app下build.gradle配置資訊(可選)
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
useLibrary 'org.apache.http.legacy'
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
}
}
3.向app下build.gradle新增依賴(必須,否則報錯)
dependencies {
annotationProcessor rootProject.ext.dependencies["butterknife-compiler"] //Butterknife
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]//依賴外掛
}
4.配置AndroidManifest
- 新增全域性配置ConfigModule(如何配置之後說明)
- 指定application
<application
android:name="com.synews.hammer.base.BaseApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
<!-- 全域性配置 -->
<meta-data
android:name="com.synews.hammer.AppConfig"
android:value="ConfigModule" />
</application>
5.混淆(可選)
自帶一份錘子使用框架的混淆檔案(proguard-rules.pro),如使用混淆,請將混淆配置新增到自己的混淆配置中
快速開始
全域性配置
建立AppConfig實現ConfigModule介面
public class AppConfig implements ConfigModule {
@Override
public void applyOptions(Context context, AppConfigModule.Builder builder) {
//全域性配置
}
@Override
public void injectAppLifecycle(Context context, List<AppLifecycles> lifecycles) {
//向Application的生命週期中注入一些自定義邏輯
}
@Override
public void injectActivityLifecycle(Context context, List<Application.ActivityLifecycleCallbacks> lifecycles) {
//向Activity的生命週期中注入一些自定義邏輯
}
@Override
public void injectFragmentLifecycle(Context context, List<FragmentManager.FragmentLifecycleCallbacks> lifecycles) {
//向Fragment的生命週期中注入一些自定義邏輯
}
}
相關文章
- 手裡拿著錘子,看啥都像釘子
- PAT 1018 錘子剪刀布
- 拿個錘子看誰都是釘子
- 錘子重磅新機下月釋出 錘子將帶來什麼驚喜呢?
- PAT1018錘子剪刀布
- Man手冊的使用
- sqlmap使用者手冊SQL
- PuTTY使用者手冊
- sqlmap使用者手冊[續]SQL
- PAT-B 1018 錘子剪刀布 【模擬】
- steam電子郵件地址怎麼註冊 2022使用電子郵箱註冊steam教程
- 手動造輪子——為Ocelot整合Nacos註冊中心
- 吳恩達教你如何使用“錘子”?機器學習新書免費領吳恩達機器學習新書
- 電子創客案例手冊 Arduino和Raspberry Pi電子製作實戰UI
- ZYNQ核心板使用者手冊
- PHP-imap 使用參考手冊PHP
- 錘子數碼科技新增演出經紀服務
- 手冊
- 沒錢沒需求幹個錘子的數字化
- 程式碼都寫不完,還寫個錘子註釋!
- 使用者手冊:智慧家居系統
- 現階段實踐“拿著錘子找釘子”的六個步驟
- 一句指令就能衝咖啡、倒紅酒、錘釘子,清華具身智慧CoPa「動」手了
- CDH 5.7.1單使用者模式部署手冊模式
- MaxCompute 圖計算使用者手冊(下)
- MaxCompute 圖計算使用者手冊(上)
- Redis手冊Redis
- SparkSQL手冊SparkSQL
- MongoDB手冊MongoDB
- 前端手冊前端
- iQOO同款相機+驍龍710,錘子堅果Pro 2s已成百元手機
- 錘子堅果2配置疑似曝光:還用驍龍625?
- Oracle GoldenGate Veridata 12.2.1.4安裝配置使用全手冊OracleGo
- 【Android 修煉手冊】Gradle 篇 -- Gradle 的基本使用AndroidGradle
- Stimulsoft Reports使用者手冊:如何建立關係
- FastReport VCL程式設計師手冊:使用TfrxReport元件AST程式設計師元件
- 中國手機市場現狀:華為小米OV圍剿蘋果 錘子等小廠商崩盤蘋果
- 《戰錘》武器設計:手繪風格的PBR流程