- 通过
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
自然就是监听切换回前台的函数了