【问题标题】:how to detect the closing of the app and take acction ? ( kotlin )如何检测应用程序的关闭并采取措施? (科特林)
【发布时间】:2018-12-19 15:38:58
【问题描述】:

我想在应用关闭时禁用 WiFi。 我知道使用此行禁用 WiFi 的代码:

wifiManager!!.isWifiEnabled = false

但我不知道如何检测应用程序的关闭。

【问题讨论】:

标签: android android-studio kotlin android-wifi


【解决方案1】:

这正是生命周期的用途。任何需要完成的清理工作都应该在 onDestroy() 中完成。这是您的活动被销毁之前收到的最后一个电话。因此,在您想要禁用 wifi 的活动中,您可以这样做:

override func onDestroy() {

   super.onDestroy();
   wifiManager!!.isWifiEnabled = false;

}

【讨论】:

    【解决方案2】:

    您可以查看this blog post。它比我更详细地描述了如何做到这一点。

    编辑:

    博文的重要部分是:

    1 - 创建将由自定义应用程序类实现的接口:

    interface LifecycleDelegate {
        fun onAppBackgrounded()
        fun onAppForegrounded()
    }
    

    2 - 现在我们要实现 ActivityLifecycleCallbacks 和 ComponentCallbacks2 的类:

    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 - 我们需要在应用程序类中使用该处理程序:

    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)
        }
    }
    

    【讨论】:

    • 请给我检测关闭的功能
    • @croxy 好建议。我添加了解释。
    • @AnisKONIG 你不能只用一个函数来做。
    猜你喜欢
    • 2011-02-21
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多