国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Kotlin + Flow 實現Android 應用初始化任務啟動庫

瀏覽:2日期:2022-09-20 10:19:09
特性

Kotlin + Flow 實現的 Android 應用初始化任務啟動庫。

支持模塊化,按模塊加載任務 可指定工作進程名稱,main 表示僅在主進程運行,all 表示在所有進程運行,默認值all 可指定任務僅在工作線程執行 可指定任務僅在調試模式執行 可指定任務在滿足合規條件后執行 可指定任務優先級,決定同模塊內無依賴同步任務的執行順序 可指定依賴任務列表,能檢測循環依賴 使用 Flow 調度任務 僅200多行代碼,簡單明了 有耗時統計 引入依賴

項目地址:github.com/czy1121/ini…

repositories { maven { url 'https://gitee.com/ezy/repo/raw/android_public/'}} dependencies { implementation 'me.reezy.init:init:0.9.0' kapt 'me.reezy.init:init-compiler:0.9.0' // 使用 init-startup 代替 init 可以利用 Jetpack Startup 庫自動初始化 // 無需在 Application.onCreate 調用 InitManager.init() implementation 'me.reezy.init:init-startup:0.9.0' }使用

在 AndroidManifest.xml 的 <application> 里添加模塊

<meta-data android:name='modules' android:value='app' />

通過注解 @Init 和 InitTask 接口定義一個任務

@Initclass OneInit : InitTask { override fun execute(app: Application) { Log.e(TAG, 'this is ${javaClass.simpleName} in ${Thread.currentThread().name}') }}

通過注解 @Init 的參數配置任務信息

@Target(AnnotationTarget.CLASS)@Retention(AnnotationRetention.SOURCE)annotation class Init( val process: String = 'all', // 指定工作進程名稱,main 表示僅在主進程運行,all 表示在所有進程運行 val background: Boolean = false, // 是否在工作線程執行任務 val debugOnly: Boolean = false, // 是否僅在 DEBUG 模式執行任務 val compliance: Boolean = false, // 是否需要合規執行 val depends: Array<String> = [], // 依賴的任務列表 val priority: Short = 0 // )

APT會按模塊收集任務信息并生成任務加載器(InitLoader_$moduleName),任務加載器用于添加任務到TaskList

class Task( val name: String, // APT收集的任務名稱格式為 '$moduleName:${clazz.simpleName}' val background: Boolean = false, // 是否在工作線程執行任務 val priority: Int = 0, // 進程運行的優先級,值小的先執行 val depends: Set<String> = setOf(), // 依賴的任務列表,同模塊只需指定'${clazz.simpleName}',跨模塊需要指定 '$moduleName:${clazz.simpleName}' val block: () -> Unit = {}, // 待執行的任務) { val children: MutableSet<Task> = mutableSetOf() // 子任務列表}

核心類

TaskList 負責持有和添加任務 TaskManager 負責調度任務,支持添加開關任務(沒有業務僅作為開關,可手動觸發完成,并償試執行其子任務)

無依賴的異步任務,在子線程并行執行無依賴的同步任務,在主線程順序執行有依賴的任務,確保無循環依賴,且被依賴的任務先執行

InitManager 負責找到各模塊的任務加載器并開始啟動初始化,它使用了一個合規開關來使相關任務在確定合規后執行

可以不使用 InitManager 收集任務

val taskList = TaskList(app).apply { add('task1') { } add('task2', depends = setOf('t1')) { } add('task3', depends = setOf('task1')) { } }val manager = TaskManager(taskList, setOf('t1'))manager.start()// ...// 完成開關任務t1manager.trigger('t1')

以上就是Kotlin + Flow 實現Android 應用初始化任務啟動庫的詳細內容,更多關于實現Android 應用初始化任務啟動庫的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 午夜国产 | 亚洲国产精品激情在线观看 | 成人福利网站含羞草 | 国产在线观看免费 | 国产成人亚洲精品一区二区在线看 | 国产亚洲人成网站观看 | 99久久免费精品国产免费高清 | 亚洲人成在线影院 | 亚洲一级二级三级 | 黄视频免费在线 | 毛片网站大全 | 亚洲国产第一区二区香蕉 | 国产a一级 | 萌白酱福利视频在线网站 | 怡红院免费播放全部视频 | 国产精品路边足疗店按摩 | 国产在线高清不卡免费播放 | 中文字幕一区二区在线视频 | 99av视频| 手机精品在线 | 欧美一级毛片在线一看 | 韩国美女毛片 | 久久精品中文字幕首页 | 久久爱wwwww 久久爱www成人 | 男人扒开腿躁女人j | 久草久在线 | 久久 精品 一区二区 | 国产舐足视频在线观看 | 请看一下欧美一级毛片 | 久久草在线视频播放 | 免费永久观看美女视频网站网址 | 精品久久久久久无码中文字幕 | 亚洲国产欧美日韩精品一区二区三区 | 国产日韩欧美精品一区二区三区 | 国产成人精品一区二三区2022 | 欧美成人自拍 | 99热在线获取最新地址 | 欧美最新的精品videoss | 欧美一级毛片欧美一级成人毛片 | 久cao在线观看视频 久爱免费观看在线网站 | 一区二区三区日本视频 |