原创 GreenDao源碼

簡述 DaoMaster、具體的Dao 和 DaoSession對象爲greedao生成的代碼 從平時的使用可以看出他們的作用 DaoMasterGreenDao的總入口,負責整個庫的運行,實現了SqliteOpenHelper DaoS

原创 HandlerThread和IntentService

HandlerThread HandlerThread繼承了Thread,它是一種可以使用Handler的Thread,它實現也很簡單,就是在run中通過Looper.prepare()來創建消息隊列,並且通過Looper.loop()來

原创 線程池

1.使用線程池的好處和缺點 通過重複利用已創建的線程, 減少在創建和銷燬線程上所花的時間以及系統資源的開銷。 提高響應速度。 當任務到達時, 任務可以不需要等到線程創建就可以立即行。 提高線程的可管理性。 使用線程池可以對線程進行統一的

原创 對象表達式

有時候我們想要創建一個對當前類有一點小修改的對象,但不想重新聲明一個子 類。java 用匿名內部類的概念解決這個問題。Kotlin 用對象表達式和對象聲明巧妙 的實現了這一概念。 java實現 class MyClass {

原创 Android 性能專題篇 - 內存優化

一、解決所有的內存泄漏 1. 單利泄漏 主要原因還是因爲一般情況下單例都是全局的,有時候會引用一些實際生命週期比較短的變量,導致其無法釋放。 例如 : activity 的 context賦值到單利對象裏面的成員量變量: privat

原创 委託(Delegate)

1. 類的委託 委託模式 給實現繼承提供了很好的代替方式, Kotlin 在語法上支持這一點,所以並 不需要什麼樣板代碼。 Derived 類可以繼承 Base 接口並且指定一個對象代理 它全部的公共方法: // 類的委託 /

原创 高階函數和Lambda表達式

高階函數就是可以接受函數作爲參數並返回一個函數的函數。 爲高階函數傳遞函數類型參數值可以用如下3種方法 1. 直接定義函數,並傳遞,在函數名前需要加:: 1. 使用Lambda表達式 1. 使用匿名函數 // 高階函數(high

原创 retrofit源碼解析

在Android客戶端的項目網絡請求實踐中,對retrofit進行了實踐和源碼的閱讀。從retrofit的用法入手,對retrofit進行解析。 首先看一下retrofit的基本用法: 第一步創建retrofit對象: Retrofit

原创 Kotlin---------------可空類型與? ?: ?. !!

Kotlin—————可空類型與? ?: ?. !!

原创 封閉類(Sealed Classes)

封閉類(Sealed Classes)用於代表嚴格的類結構,值只能是有限集合中的某中類型,不可以是任何其 它類型。這就相當於一個枚舉類的擴展:枚舉值集合的類型是嚴格限制的,但每個 枚舉常量只有一個實例,而密封類的子類可以有包含不同狀態

原创 函數

函數 函數聲明 kotlin 中用關鍵字 fun 聲明函數: fun double(x: Int): Int { } 函數用法 通過傳統的方法調用函數 // 函數的基本用法 fun double(x:Int):Int {

原创 GreenDao使用教程

一 Greendao簡介 二Greendao的使用方法 配置 初始化Greendao Greendao操作數據庫文件增刪改查 三多表關聯 四Greendao註解含義 五Greendao特性 一、 Greendao簡

原创 標準委託

1.惰性加載 拉遠站是一個函數,接受一個lambda表達式座位參數初始化函數,與前面實現的delegate類似,返回一個Lazy類型的實例,這個實例可以座位委託實現懶加載屬性: 第一次調用get的時候,將會執行從lazy函數傳入Lamb

原创 數據類

數據類 複製 數據類 我們經常創建一個只保存數據的類。在這樣的類中一些函數只是機械的對它們持有 的數據進行一些推導。在 kotlin 中這樣的類稱之爲 data 類,用 data 標註: data class

原创 枚舉類

1.枚舉類基本用法 2.枚舉類定義變量 3.爲枚舉類指定對應的值 4. 匿名類 1.枚舉類基本用法 枚舉類最基本的用法就是實現類型安全的枚舉 enum class Direction { NORTH,SOUTH,WES