Есть ли способ точно определить, когда активность уничтожается в android? - PullRequest
0 голосов
/ 18 апреля 2020

Я создаю android приложение в java, в котором мне нужно запускать некоторые запросы к базе данных, когда действие полностью уничтожено, что, вероятно, произойдет, если пользователь нажмет кнопку назад или покинет само приложение ... Но функция onDestroy() в моем приложении срабатывает случайным образом, даже когда пользователь все еще находится в процессе активности ... Я предполагаю, что вероятной причиной этого являются изменения конфигурации, но я не могу найти правильное решение для этого.

Есть ли способ, которым мы могли бы точно определить, когда пользователь оставляет действие, избегая любых изменений конфигурации на странице ??

Я использую onDestroy ():

@Override
protected void onDestroy() {
   /// do smthng
   super.onDestroy();
}

Любая помощь будет оценена !!

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Мы можем проверить, является ли наше приложение передним или задним планом на основе активности, входящей и выходящей из переднего плана, выполнив ActivityLifecycleCallbacks.

Хорошая справка: https://medium.com/@iamsadesh / android - как -to-обнаружить-когда-приложение-идет-фон-передний план-fd5a4d331f8a

Цитирование из вышеприведенной статьи,

@Override
public void onActivityStarted(Activity activity) {
    if (++activityReferences == 1 && !isActivityChangingConfigurations) {
        // App enters foreground
    }
}

и,

@Override
public void onActivityStopped(Activity activity) {

    isActivityChangingConfigurations = activity.isChangingConfigurations();
    if (--activityReferences == 0 && !isActivityChangingConfigurations) {
        // App enters background
    }
}

с помощью которого мы можем убедиться, что наше приложение находится на переднем плане или нет. Здесь у вас всегда есть контроль над тем, какие действия находятся на переднем плане, на основе которых вы можете проверить и выполнить логи c.

0 голосов
/ 18 апреля 2020

Решено : Спасибо за ответ, ребята ... Для меня onStop() отлично сработало, и оно работает во всех случаях, будь то нажатие кнопки назад или выход из активности или приложения. сам!!

0 голосов
/ 18 апреля 2020

Если вы хотите проверить, завершил ли пользователь действие, что означает нажатие назад, сделайте следующее:

@override
public void onBackPressed(){

//do something before we finish the activity

super.onBackPressed();

}

Если вы хотите проверить, когда пользователь переходит к следующему действию, затем возвращается к тому же действию :

@override
public void onResume(){

//do something when return back to this activity

super.onResume();

}


@override
public void onPause(){

//do something before going to another activity

super.onPause();

}

onDestroy вызывается, когда действие уничтожено или завершено и не гарантируется, что оно будет вызываться всегда, не зависит от него

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...