Как обнаружить, если какое-либо мое действие является передним больше всего и видимым пользователю?

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

Для решения этого я должен знать, является ли какое-либо мое действие передней стороной больше всего, как делают меня это?

25
задан Pentium10 28 June 2010 в 21:16
поделиться

2 ответа

Я не знаю, есть ли способ получить текущую отображаемую активность, но вы могли бы что-то сделать, комбинируя Жизненный цикл активности и флаг.

Что касается флага, если вы расширили класс Application, это, вероятно, подходящее место для его хранения. Для расширения класса приложения в верхнем ответе на этот вопрос есть информация. (г).

Так что, вероятно, отслеживайте текущую активную активность (или отметку о том, что активность видна) в onResume / onPause или onStart / onStop, в зависимости от того, какое именно поведение вы хотите.

Поскольку у вас есть несколько действий, вам понадобится место центроида для хранения флага, поэтому приложение имеет смысл. Вы можете получить настраиваемый объект Application, приведя контекст приложения (например, ((MyApplication) getApplicationContext ()). IsMyActivityActive).

Вы также можете расширить Activity, чтобы этот код оставался чистым и содержательным.


Если вы используете службу, вы можете привязать ее к каждому действию в onStart / onStop (или onResume / onPause). Если привязан, тебя видно.

10
ответ дан 28 November 2019 в 21:55
поделиться

onResume () вызвал && onPause () not called = visible.
Имейте общедоступное статическое Activity CurrentVisible; в подклассе Application , которое будет обновляться вашими действиями (для экземпляра в onResume () и null ed в onPause () ). Или изобрести менее уродливый вариант реестра.

2
ответ дан 28 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: