1.后台任务处理类
class TaskEngine private constructor() {
private var mTaskListener: TaskListener? = null
interface TaskListener {
fun onXxx()
}
private val mTaskStack = TaskStack() // 任务队列
private val mTaskExecuteThread: HandlerThread by lazy {
HandlerThread("process_task").apply {
start()
}
}
// 注册任务处理监听。不需要的话注册null(TaskListener = null)
fun registerTaskListener(listener: TaskListener?) {
mTaskListener = listener
}
// 外部传入task
fun postTask(task: Task) {
mTaskStack.offer(task)
if (!mTaskHandle.hasMessages(MSG_EXECUTE_TASK)) {
mTaskHandle.postTask()
}
}
private val mTaskHandle = object : Handler(mTaskExecuteThread.looper) {
override fun handleMessage(msg: Message) {
while (mTaskStack.size() > 0) {
va