#android #android-activity
#Android #android-активность
Вопрос:
Как я могу запустить одно действие, фактически не запуская его на экране?
Комментарии:
1. Как мы можем понять, что вы имеете в виду, если вы не даете дополнительных объяснений?
2. Например: у меня есть 2 действия. Действие A и B. Действие B запускает службу, как только она запускается. Но я хочу запустить службу через действие A, поэтому мне нужно каким-то образом запустить действие B из A, не показывая его на экране
3. Мне также было интересно, как это сделать. Лучшим решением, которое я нашел, был вызов функции finish () после запуска моей службы в activity B .. Я действительно надеюсь, что здесь вы получите лучший ответ..
4. Просто не делайте этого. Это звучит как недостаток в вашем дизайне.
Ответ №1:
Например: у меня есть 2 вида деятельности. Действие A и B. Действие B запускает службу, как только она запускается. Но я хочу запустить службу через действие A, поэтому мне нужно каким-то образом запустить действие B из A, не показывая его на экране
Шаг # 1: Вызов startService()
в действии A.
Шаг № 2: Нет шага № 2.
Если вы хотите иметь некоторый общий код, в котором либо Activity A, либо Activity B могут запускать службу, создайте статический метод или создайте базовый класс, от которого наследуются как A, так и B.
Комментарии:
1. Да, но проблема в том, что Служба использует метод внутри действия B. И если я использую startService () из действия A, я получаю исключение nullpointerexception, потому что значения в действии B не были инициированы.
2. @Carnal: «Да, но проблема в том, что Служба использует метод внутри Activity B» — избавьтесь от этого. Вы никогда не должны этого делать. Чтобы уточнить,
Service
не следует пытаться вызывать методы наActivity
.Activity
Может быть уничтожен Android в любой момент. Если aService
может достичьActivity
, у вас утечка памяти. Я гарантирую вам, что есть лучшие решения для любой проблемы, которую вы пытаетесь решить таким образом.3. Здравствуйте, моя проблема, которая близка к первой, заключается в запуске моего приложения с помощью действия, которое выбирает пользователь. Обычно я запускаю ActivityA по умолчанию, затем ActivityA проверяет настройки и запускает ActivityB, C, D … затем ActivityA закрывается. Как я могу этого добиться?