2013-03-20 2 views
1

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

Я продолжал свою деятельность от одного вызова Baseactivity, а класс Baseactivity расширяет андроидную активность. Я добавляю код appcomeForeground() в базовую активность onRestart(), но его вызов, когда мы также перемещаем активность в наше приложение переднего плана.

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

Заранее спасибо.

+0

Вы пытались поддерживать одноэлементное состояние среди всех видов деятельности? – sandrstar

+0

Возможный дубликат [Проверка, работает ли приложение Android в фоновом режиме] (http://stackoverflow.com/questions/3667022/checking-if-an-android-application-is-running-in-the-background) –

ответ

1

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

Объявите класс, который будет поддерживать состояние

public class ApplicationState { 
    public static boolean isActivityVisible() { 
     return activityVisible; 
    } 

    public static void activityResumed() { 
     activityVisible = true; 
    } 

    public static void activityPaused() { 
     activityVisible = false; 
    } 

    private volatile static boolean activityVisible; 
} 

в onResume методе любой деятельности вашего приложения вызова

ApplicationState.activityResumed() 

и методом любой деятельности вашего вызова приложения

ApplicationState.activityPaused() 

Теперь в любое время вы можете c щеколда переднего плана/фона состояние вашего приложения, просто вызывая

ApplicationState.isActivityVisible() 
+0

im used ApplicationState.isActivityVisible() in при запуске и перезапуске также, но всегда false. – PrvN

+0

Я использую этот метод .. и он работает нормально.проверьте, был ли вы задействован метод activityresumed и curlized actionpaused – stinepike

+0

Я использовал эти методы в своем базовом классе активности. и проверьте isActivityVeible в child onStart() и onRestart(). все случай своя ложь. – PrvN

1

Поддерживать логическую переменную в Baseactivity,

т.е.

private boolean isForeground; 

Внутри onResume() из Baseactivity сделать isForeground = true и внутри onPause() метода Baseactivity сделать isForeground = false

и всякий раз, когда вы хотите узнать статус, проверьте, что bool ean variable и примените вашу дальнейшую логику соответственно.

+0

Спасибо за ответ. Но это не работает. isForeground остается ложным. :( – PrvN

+0

try, private static boolean isForeground; –

+0

onRestart im check isForeground flag, но его возвращает false. – PrvN

0

Другой способ решения заключается в вызове putExtra на намерения, которые позволяют пользователю перемещаться между различными видами деятельности приложения. Если onRestart/onResume не получает этот Экстра, приложение просто выходило на передний план.

Смежные вопросы