Как определить, когда приложение Android уходит в фоновый режим? onPause () или onUserLeaveHint () работают, но также вызываются при изменении ориентации или представлении другого действия.
Как определить, когда приложение Android свернуто?
comment
Возможный дубликат Определение текущего приложения переднего плана из фоновая задача или услуга
- person Aman Grover   schedule 22.09.2016
Ответы (3)
Если ориентация изменится, приложение снова вызовет жизненный цикл, что означает oncreate
вы также можете избежать этого, написав следующее в коде манифеста
<activity
android:name=""
android:configChanges="orientation|keyboardHidden|screenLayout|screenSize"
android:label="@string/app_name" />
это говорит системе, что при изменении ориентации или изменении keyboardHidden или screenLayout я справлюсь с этим самостоятельно, и нет необходимости создавать его заново.
затем напишите свой код на паузе
person
Joyal C Joseph
schedule
22.09.2016
Хорошо, счастливого кодирования
- person Joyal C Joseph; 24.09.2016
это может решить проблему с ориентацией на изменение, но onPause по-прежнему будет вызываться при переключении действий и приложение не будет свернуто ..... Я все еще ищу ответ.
- person DoruChidean; 21.12.2018
Отмеченный ответ - это обходной путь для вопроса OP. Остальные из нас, которые ищут ответ, могут добиться этого с помощью компонентов архитектуры Android.
import android.arch.lifecycle.LifecycleObserver;
class OurApplication extends Application implements LifecycleObserver {
@Override
public void onCreate() {
super.onCreate();
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onAppBackgrounded() {
Logger.localLog("APP BACKGROUNDED");
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppForegrounded() {
Logger.localLog("APP FOREGROUNDED");
}
}
и не забудьте обновить файл манифеста. установить атрибут android:name=".OurApplication"
для тега <application>
person
DoruChidean
schedule
08.03.2019
Это должен быть принятый ответ.
- person Oke Uwechue; 08.12.2020
Добавьте ниже зависимость для тех, кто не может использовать androidx:
implementation 'android.arch.lifecycle:extensions:1.1.1'
- person MHSFisher; 02.02.2021
Попробуй это
@Override
protected void onUserLeaveHint()
{
// When user presses home page
Log.v(TAG, "Home Button Pressed");
super.onUserLeaveHint();
}
Подробнее: https://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()
person
Ram Prakash Bhat
schedule
22.09.2016
Мне нужно завершить работу, когда приложение переходит в фоновый режим. onUserLeaveHint также вызывается при изменении ориентации. Так что это не работает для меня
- person Agshin Huseynov; 22.09.2016