Я хотел бы запустить намерение, когда любое мое действие будет видимо, иначе я подниму его как уведомление и буду уволен пользователем.
Для решения этого я должен знать, является ли какое-либо мое действие передней стороной больше всего, как делают меня это?
Я не знаю, есть ли способ получить текущую отображаемую активность, но вы могли бы что-то сделать, комбинируя Жизненный цикл активности и флаг.
Что касается флага, если вы расширили класс Application, это, вероятно, подходящее место для его хранения. Для расширения класса приложения в верхнем ответе на этот вопрос есть информация. (г).
Так что, вероятно, отслеживайте текущую активную активность (или отметку о том, что активность видна) в onResume / onPause или onStart / onStop, в зависимости от того, какое именно поведение вы хотите.
Поскольку у вас есть несколько действий, вам понадобится место центроида для хранения флага, поэтому приложение имеет смысл. Вы можете получить настраиваемый объект Application, приведя контекст приложения (например, ((MyApplication) getApplicationContext ()). IsMyActivityActive).
Вы также можете расширить Activity, чтобы этот код оставался чистым и содержательным.
Если вы используете службу, вы можете привязать ее к каждому действию в onStart / onStop (или onResume / onPause). Если привязан, тебя видно.
onResume ()
вызвал && onPause ()
not called = visible.
Имейте общедоступное статическое Activity CurrentVisible;
в подклассе Application
, которое будет обновляться вашими действиями (для экземпляра в onResume ()
и null
ed в onPause ()
). Или изобрести менее уродливый вариант реестра.