Как определить, находится ли домашняя активность на вершине ActivityStack - PullRequest
3 голосов
/ 29 июня 2011

Я хочу определить текущую активность переднего плана от фоновой службы.

В частности, я хочу знать, находится ли Домашняя активность на вершине стека активности Android или нет.

Вариант использования выглядит примерно так: Если домашняя активность находится на переднем плане (т. Е. Пользователь не использует другое приложение), мне нужно показать диалоговое окно с предупреждением о каком-либо событии в фоновом режиме. Но если домашняя активность находится не над стеком (т. Е. Пользователь использует какое-то другое приложение), я должен показывать уведомление в строке состояния о каком-либо событии в службе.

Есть ли способ определить текущую активность на переднем плане?

Ответы [ 3 ]

5 голосов
/ 29 июня 2011

См. здесь

Здесь вы можете найти передний план Activity, затем сравнить его пакет с домашним пакетом. Это может быть android.home

0 голосов
/ 12 июля 2014

Может быть, это работает:

Это запустит домашний экран-

    Intent i = new Intent(); 
    i.setAction(Intent.ACTION_MAIN); 
    i.addCategory(Intent.CATEGORY_HOME); 
    startActivity(i);

Теперь проверьте активность наверх-

    ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
    String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName();

Я не пробовал это, но оно должно работать.

0 голосов
/ 29 июня 2011

Вы можете привязать свою домашнюю активность к услуге в onResume() и уведомить службу, что она работает.Затем в onPause() вы можете сделать еще один вызов службе, чтобы уведомить ее, что активность больше не находится на переднем плане, и отменить привязку.

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