Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何检测应用程序关闭并采取行动?(科特林)_Android_Android Studio_Kotlin_Android Wifi - Fatal编程技术网

Android 如何检测应用程序关闭并采取行动?(科特林)

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

我想在应用程序关闭时禁用WiFi。 我知道使用此线路禁用WiFi的代码:

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你不能只用一个函数。