как обнаружить закрытие приложения и принять меры?(котлин) - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу отключить WiFi, когда приложение закрыто.Я знаю код для отключения WiFi, используя эту строку:

wifiManager!!.isWifiEnabled = false

, но я не знаю, как определить закрытие приложения.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Это именно то, для чего используются жизненные циклы.Любая работа по очистке, которая должна быть выполнена, должна быть сделана в onDestroy ().Это последний звонок, который вы получите до того, как ваша деятельность будет уничтожена.Так что в упражнении, где вы хотите отключить Wi-Fi, вы можете просто сделать:

override func onDestroy() {

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

}
0 голосов
/ 19 декабря 2018

Вы можете проверить это сообщение в блоге .В нем описано, как сделать это более подробно, чем я мог.

РЕДАКТИРОВАТЬ:

Важные части сообщения в блоге:

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