Skip to content

Commit

Permalink
feat:启动任务调整
Browse files Browse the repository at this point in the history
  • Loading branch information
sumingyan committed Apr 24, 2023
1 parent 5d3548c commit d95c17c
Show file tree
Hide file tree
Showing 10 changed files with 285 additions and 247 deletions.
92 changes: 17 additions & 75 deletions app/src/main/java/com/sum/tea/SumApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,17 @@ import android.app.Application
import android.content.Context
import android.os.Bundle
import androidx.multidex.MultiDex
import com.alibaba.android.arouter.launcher.ARouter
import com.scwang.smart.refresh.footer.ClassicsFooter
import com.scwang.smart.refresh.header.ClassicsHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.sum.framework.helper.SumAppHelper
import com.sum.framework.manager.AppFrontBack
import com.sum.framework.manager.AppFrontBackListener
import com.sum.framework.log.LogUtil
import com.sum.framework.manager.ActivityManager
import com.sum.framework.toast.TipsToast
import com.sum.framework.manager.AppManager
import com.sum.stater.dispatcher.TaskDispatcher
import com.sum.stater.inittasks.InitGlideTask
import com.sum.stater.inittasks.InitLanguageTask
import com.sum.stater.inittasks.InitNetWorkTask
import com.sum.stater.inittasks.InitShareManagerTask
import com.tencent.mmkv.MMKV
import com.tencent.mmkv.MMKVLogLevel
import com.sum.tea.task.InitMmkvTask
import com.sum.tea.task.InitAppManagerTask
import com.sum.tea.task.InitRefreshLayoutTask
import com.sum.tea.task.InitArouterTask
import com.sum.tea.task.InitSumHelperTask

/**
* @author mingyan.su
Expand All @@ -31,86 +24,35 @@ import com.tencent.mmkv.MMKVLogLevel
*/
class SumApplication : Application() {

companion object {
private lateinit var instance: SumApplication

fun getInstance() = instance
}

override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
MultiDex.install(base)
}

override fun onCreate() {
super.onCreate()
instance = this
SumAppHelper.init(this, BuildConfig.DEBUG)
initRouter()

//注册APP前后台切换监听
appFrontBackRegister()
// App启动立即注册监听
registerActivityLifecycle()
TipsToast.init(this)
//TaskDispatcher初始化
TaskDispatcher.init(this)

val rootDir: String = MMKV.initialize(this)
MMKV.setLogLevel(
if (BuildConfig.DEBUG) {
MMKVLogLevel.LevelDebug
} else {
MMKVLogLevel.LevelError
}
)
LogUtil.d("mmkv root: $rootDir", tag = "MMKV")

AppManager.init(this)

//创建dispatcher实例
//1.启动器:TaskDispatcher初始化
TaskDispatcher.init(this)
//2.创建dispatcher实例
val dispatcher: TaskDispatcher = TaskDispatcher.createInstance()

//添加任务并且启动任务
dispatcher.addTask(InitGlideTask(this))
.addTask(InitLanguageTask(this))
.addTask(InitNetWorkTask(this))
.addTask(InitShareManagerTask(this))
//3.添加任务并且启动任务
dispatcher.addTask(InitSumHelperTask(this))
.addTask(InitMmkvTask())
.addTask(InitAppManagerTask())
.addTask(InitRefreshLayoutTask())
.addTask(InitArouterTask())
.start()

//等待,需要等待的方法执行完才可以往下执行
// dispatcher.await()
initRefreshLayout()
}

/**
* 初始化ARouter
*/
private fun initRouter() {
// 这两行必须写在init之前,否则这些配置在init过程中将无效
if (BuildConfig.DEBUG) {
// 开启打印日志
ARouter.openLog()
// 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
ARouter.openDebug()
}
ARouter.init(this)
}

/**
* 全局初始化SmartRefreshLayout
*/
private fun initRefreshLayout() {
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, layout ->
layout.setPrimaryColorsId(android.R.color.white)
// CustomRefreshHeader(context)
ClassicsHeader(context)
}
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreator { context, layout ->
//指定为经典Footer,默认是 BallPulseFooter
ClassicsFooter(context)
}
//4.等待,需要等待的方法执行完才可以往下执行
dispatcher.await()
}

/**
Expand Down
164 changes: 164 additions & 0 deletions app/src/main/java/com/sum/tea/task/StartTasks.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
package com.sum.tea.task

import android.app.Application
import com.alibaba.android.arouter.launcher.ARouter
import com.scwang.smart.refresh.footer.ClassicsFooter
import com.scwang.smart.refresh.header.ClassicsHeader
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.sum.framework.helper.SumAppHelper
import com.sum.framework.log.LogUtil
import com.sum.framework.manager.AppManager
import com.sum.stater.task.Task
import com.sum.stater.utils.DispatcherExecutor
import com.sum.tea.BuildConfig
import com.tencent.mmkv.MMKV
import com.tencent.mmkv.MMKVLogLevel
import java.util.concurrent.ExecutorService

/**
* 初始化启动任务
*/

/**
* 初始化全局帮助类
*/
class InitSumHelperTask(val application: Application) : Task() {
//异步线程执行的Task在被调用await的时候等待
override fun needWait(): Boolean {
return true
}

override fun run() {
SumAppHelper.init(application, BuildConfig.DEBUG)
}
}

/**
* 初始化MMKV
*/
class InitMmkvTask() : Task() {

//异步线程执行的Task在被调用await的时候等待
override fun needWait(): Boolean {
return true
}

//依赖某些任务,在某些任务完成后才能执行
override fun dependsOn(): MutableList<Class<out Task>> {
val tasks = mutableListOf<Class<out Task?>>()
tasks.add(InitSumHelperTask::class.java)
return tasks
}

//指定线程池
override fun runOn(): ExecutorService? {
return DispatcherExecutor.iOExecutor
}

//执行任务初始化
override fun run() {
val rootDir: String = MMKV.initialize(SumAppHelper.getApplication())
MMKV.setLogLevel(
if (BuildConfig.DEBUG) {
MMKVLogLevel.LevelDebug
} else {
MMKVLogLevel.LevelError
}
)
LogUtil.d("mmkv root: $rootDir", tag = "MMKV")
}
}

/**
* 初始化AppManager
*/
class InitAppManagerTask() : Task() {
//异步线程执行的Task在被调用await的时候等待
override fun needWait(): Boolean {
return true
}

//依赖某些任务,在某些任务完成后才能执行
override fun dependsOn(): MutableList<Class<out Task>> {
val tasks = mutableListOf<Class<out Task?>>()
tasks.add(InitSumHelperTask::class.java)
return tasks
}

override fun run() {
AppManager.init(SumAppHelper.getApplication())
}
}

/**
* 全局初始化SmartRefreshLayout
*/
class InitRefreshLayoutTask() : Task() {
//异步线程执行的Task在被调用await的时候等待
override fun needWait(): Boolean {
return true
}

override fun run() {
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, layout ->
layout.setPrimaryColorsId(android.R.color.white)
// CustomRefreshHeader(context)
ClassicsHeader(context)
}
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreator { context, layout ->
//指定为经典Footer,默认是 BallPulseFooter
ClassicsFooter(context)
}
}
}

/**
* 初始化ShareManager
*/
class InitArouterTask() : Task() {
//异步线程执行的Task在被调用await的时候等待
override fun needWait(): Boolean {
return true
}

//依赖某些任务,在某些任务完成后才能执行
override fun dependsOn(): MutableList<Class<out Task>> {
val tasks = mutableListOf<Class<out Task?>>()
tasks.add(InitSumHelperTask::class.java)
return tasks
}

//执行任务,任务真正的执行逻辑
override fun run() {
// 这两行必须写在init之前,否则这些配置在init过程中将无效
if (BuildConfig.DEBUG) {
// 开启打印日志
ARouter.openLog()
// 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
ARouter.openDebug()
}
ARouter.init(SumAppHelper.getApplication())
}
}

/**
* 初始化A
*/
class InitTaskA() : Task() {

override fun run() {
//...
}
}

/**
* 初始化B
*/
class InitTaskB() : Task() {

override fun run() {
//...
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import androidx.fragment.app.FragmentActivity
import com.sum.common.databinding.DialogMessageBinding
import com.sum.framework.base.BaseDialogFragment
import com.sum.framework.ext.onClick
import com.sum.framework.manager.AppManager

/**
* 普通弹框
Expand All @@ -27,6 +28,7 @@ class MessageDialog {

init {
setContentView(mBinding.root)
setWidth((AppManager.getScreenWidthPx() * 0.8).toInt())
setAnimStyle(TOAST)
setGravity(Gravity.CENTER)
}
Expand Down
Loading

0 comments on commit d95c17c

Please sign in to comment.