- 通过
RunningAppProcessInfo获取当前包名的进程是否在前台不准确
方案
1、在BaseActivity中用list集合保存已打开的Activity实例,保存当前Activity中onCreate时的所有界面数量
private val myActivitys = ArrayList<Activity>()
private var curActivityCount = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
myActivitys.add(this)
curActivityCount = myActivitys.size
}
2、在BaseActivity的onStop中判断界面数量是否有新增和是否正在销毁,就可区分当前是被遮住了还是在销毁界面还是退到后台了
-
isFinishing是Activity自有函数
override fun onStop() {
super.onStop()
if (curActivityCount == myActivitys.size && !isFinishing) {
//退到后台了
}
}
3、退到后台后,此时当前Activity的 onResume自然就是监听切换回前台的函数了