Rename
This commit is contained in:
1 parent
b86d90021c
commit
6c0757c91b
972 files changed
+6885
-7321
No files matched your search
@@ -0,0 +1,121 @@
|
||||
package io.legato.kazusa.help
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.Application
|
||||
import android.os.Bundle
|
||||
import io.legato.kazusa.base.BaseService
|
||||
import io.legato.kazusa.utils.LogUtils
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
/**
|
||||
* Activity管理器,管理项目中Activity的状态
|
||||
*/
|
||||
@Suppress("unused")
|
||||
object LifecycleHelp : Application.ActivityLifecycleCallbacks {
|
||||
|
||||
private const val TAG = "LifecycleHelp"
|
||||
|
||||
private val activities: MutableList<WeakReference<Activity>> = arrayListOf()
|
||||
private val services: MutableList<WeakReference<BaseService>> = arrayListOf()
|
||||
private var appFinishedListener: (() -> Unit)? = null
|
||||
|
||||
fun activitySize(): Int {
|
||||
return activities.size
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断指定Activity是否存在
|
||||
*/
|
||||
fun isExistActivity(activityClass: Class<*>): Boolean {
|
||||
activities.forEach { item ->
|
||||
if (item.get()?.javaClass == activityClass) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭指定 activity(class)
|
||||
*/
|
||||
fun finishActivity(vararg activityClasses: Class<*>) {
|
||||
val waitFinish = ArrayList<WeakReference<Activity>>()
|
||||
for (temp in activities) {
|
||||
for (activityClass in activityClasses) {
|
||||
if (temp.get()?.javaClass == activityClass) {
|
||||
waitFinish.add(temp)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
waitFinish.forEach {
|
||||
it.get()?.finish()
|
||||
}
|
||||
}
|
||||
|
||||
fun setOnAppFinishedListener(appFinishedListener: (() -> Unit)) {
|
||||
this.appFinishedListener = appFinishedListener
|
||||
}
|
||||
|
||||
override fun onActivityPaused(activity: Activity) {
|
||||
LogUtils.d(TAG, "${activity::class.simpleName} onPause")
|
||||
}
|
||||
|
||||
override fun onActivityResumed(activity: Activity) {
|
||||
LogUtils.d(TAG, "${activity::class.simpleName} onResume")
|
||||
}
|
||||
|
||||
override fun onActivityStarted(activity: Activity) {
|
||||
LogUtils.d(TAG, "${activity::class.simpleName} onStart")
|
||||
}
|
||||
|
||||
override fun onActivityDestroyed(activity: Activity) {
|
||||
LogUtils.d(TAG, "${activity::class.simpleName} onDestroy")
|
||||
for (temp in activities) {
|
||||
if (temp.get() != null && temp.get() === activity) {
|
||||
activities.remove(temp)
|
||||
if (services.size == 0 && activities.size == 0) {
|
||||
onAppFinished()
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
|
||||
LogUtils.d(TAG, "${activity::class.simpleName} onSaveInstanceState")
|
||||
}
|
||||
|
||||
override fun onActivityStopped(activity: Activity) {
|
||||
LogUtils.d(TAG, "${activity::class.simpleName} onStop")
|
||||
}
|
||||
|
||||
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
|
||||
LogUtils.d(TAG, "${activity::class.simpleName} onCreate")
|
||||
activities.add(WeakReference(activity))
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun onServiceCreate(service: BaseService) {
|
||||
LogUtils.d(TAG, "${service::class.simpleName} onCreate")
|
||||
services.add(WeakReference(service))
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun onServiceDestroy(service: BaseService) {
|
||||
LogUtils.d(TAG, "${service::class.simpleName} onDestroy")
|
||||
for (temp in services) {
|
||||
if (temp.get() != null && temp.get() === service) {
|
||||
services.remove(temp)
|
||||
if (services.size == 0 && activities.size == 0) {
|
||||
onAppFinished()
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun onAppFinished() {
|
||||
appFinishedListener?.invoke()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user