是否有类似应用程序全局的onPause()
东西onResume()
?
我的主要活动监听 GPS 修复,我想在切换到另一个屏幕/活动时继续工作。因此,我无法LocationListener
在活动的onPause()
. 但是,我仍然想在切换到另一个应用程序时取消注册我的 GPS 监听器(这样可以节省电池),并在返回我的应用程序时重新打开它,无论用户当前处于什么屏幕/活动中。
有任何想法吗?
是否有类似应用程序全局的onPause()
东西onResume()
?
我的主要活动监听 GPS 修复,我想在切换到另一个屏幕/活动时继续工作。因此,我无法LocationListener
在活动的onPause()
. 但是,我仍然想在切换到另一个应用程序时取消注册我的 GPS 监听器(这样可以节省电池),并在返回我的应用程序时重新打开它,无论用户当前处于什么屏幕/活动中。
有任何想法吗?
有没有像应用程序全局 onPause() 和 onResume() 这样的东西?
不,对不起。
我的主要活动监听 GPS 修复,我想在切换到另一个屏幕/活动时继续工作。因此,我无法在活动的 onPause() 中取消注册我的 LocationListener。但是,我仍然想在切换到另一个应用程序时取消注册我的 GPS 监听器(这样可以节省电池),并在返回我的应用程序时重新打开它,无论用户当前处于什么屏幕/活动中。
这是一种可能的方法:
第 1 步:将LocationListener
逻辑移动到 aService
中,活动通过本地绑定模式或其他方式连接到它。还至少有一个服务调用startService()
,所以unbindService()
不会导致Service
消失(假设您使用的是本地绑定模式)。
第 2 步:在onPause()
和期间让活动调用服务onResume()
。
第 3 步:让服务维护未完成活动的引用计数。
第 4 步:当引用计数达到零时,让服务安排通过 Timer 和TimerTask
. TimerTask
此外,如果引用计数增加,请取消任何此类未完成的操作。
第 5 步:TimerTask
如果 GPS 被执行,请关闭它。
网络是你只会在这样那样的不活动量后才释放 GPS。这种不活动可能是出于任何原因。
使用ActivityLifecycleCallbacks。在您的应用程序中注册它:
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) = Unit
override fun onActivityStarted(activity: Activity) = Unit
override fun onActivityResumed(activity: Activity) {
Log.d(TAG, "Activity resumed: $activity")
}
override fun onActivityPaused(activity: Activity) {
Log.d(TAG, "Activity paused: $activity")
}
override fun onActivityStopped(activity: Activity) = Unit
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit
override fun onActivityDestroyed(activity: Activity) = Unit
})