Android 如何检测应用程序关闭并采取行动?(科特林)
我想在应用程序关闭时禁用WiFi。 我知道使用此线路禁用WiFi的代码:Android 如何检测应用程序关闭并采取行动?(科特林),android,android-studio,kotlin,android-wifi,Android,Android Studio,Kotlin,Android Wifi,我想在应用程序关闭时禁用WiFi。 我知道使用此线路禁用WiFi的代码: wifiManager!!.isWifiEnabled = false 但我不知道如何检测应用程序的关闭 你可以退房。它比我描述的更详细 编辑: 博客文章的重要部分包括: 1-创建将由自定义应用程序类实现的接口: interface LifecycleDelegate { fun onAppBackgrounded() fun onAppForegrounded() } class App : Appl
wifiManager!!.isWifiEnabled = false
但我不知道如何检测应用程序的关闭
你可以退房。它比我描述的更详细
编辑:
博客文章的重要部分包括:
1-创建将由自定义应用程序类实现的接口:
interface LifecycleDelegate {
fun onAppBackgrounded()
fun onAppForegrounded()
}
class App : Application(), LifeCycleDelegate {
override fun onCreate() {
super.onCreate()
val lifeCycleHandler = AppLifecycleHandler(this)
registerLifecycleHandler(lifeCycleHandler)
}
override fun onAppBackgrounded() {
Log.d("App", "App in background")
}
override fun onAppForegrounded() {
Log.d("App", "App in foreground")
}
private fun registerLifecycleHandler(lifeCycleHandler: AppLifecycleHandler) {
registerActivityLifecycleCallbacks(lifeCycleHandler)
registerComponentCallbacks(lifeCycleHandler)
}
}
2-现在,我们将创建一个类,该类将实现ActivityLifecycleCallbacks和ComponentCallbacks 2:
class AppLifecycleHandler(
private val lifeCycleDelegate: LifeCycleDelegate
) : Application.ActivityLifecycleCallbacks, ComponentCallbacks2
{
private var appInForeground = false
override fun onActivityResumed(activity: Activity?) {
if (!appInForeground) {
appInForeground = true
lifeCycleDelegate.onAppForegrounded()
}
}
override fun onTrimMemory(level: Int) {
if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
appInForeground = false
lifeCycleDelegate.onAppBackgrounded()
}
}
// stub other methods
}
3-我们需要在应用程序类中使用该处理程序:
interface LifecycleDelegate {
fun onAppBackgrounded()
fun onAppForegrounded()
}
class App : Application(), LifeCycleDelegate {
override fun onCreate() {
super.onCreate()
val lifeCycleHandler = AppLifecycleHandler(this)
registerLifecycleHandler(lifeCycleHandler)
}
override fun onAppBackgrounded() {
Log.d("App", "App in background")
}
override fun onAppForegrounded() {
Log.d("App", "App in foreground")
}
private fun registerLifecycleHandler(lifeCycleHandler: AppLifecycleHandler) {
registerActivityLifecycleCallbacks(lifeCycleHandler)
registerComponentCallbacks(lifeCycleHandler)
}
}
这正是生命周期的用途。任何需要完成的清理工作都应该在onDestroy()中完成。这是您在活动被销毁之前收到的最后一个呼叫。因此,在要禁用wifi的活动中,您只需执行以下操作:
override func onDestroy() {
super.onDestroy();
wifiManager!!.isWifiEnabled = false;
}
活动#onDestroy()
是您正在寻找的活动。我必须将其添加到所有活动中吗?请使用“请仅为我提供检测功能”closing@croxy好建议。我补充了解释。@AnisKONIG你不能只用一个函数。