Намерение начать деятельность - но не выдвигать на первый план

Описание:

  • Действие A видно (или в фоновом режиме)
  • Намерение I принимается трансляцией с ценными дополнениями, а затем передает их новому намерению I2, которое будет использоваться для запуска действия A.
  • Результат: Не выделять активность, если она выполняется в фоновом режиме.

Код:

Intent I2= new Intent(context, MyActivity.class); 
I2.putExtra(..
I2.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); // | Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(I2);

Примечание. Я не добавил в манифест "android: taskAffinity". Я подумал, что вам следует знать


person pulancheck1988    schedule 04.04.2012    source источник
comment
почему вы хотите startActivity, если не хотите, чтобы он был на переднем плане, ..? что ты хочешь сделать ..?   -  person ngesh    schedule 04.04.2012
comment
Поэтому я обновил его: НЕ ПЕРЕНОСИТЕ активность на передний план, ЕСЛИ активность находится в фоновом режиме!   -  person pulancheck1988    schedule 04.04.2012
comment
Не используйте для этого FLAG_ACTIVITY_MULTIPLE_TASK! Если вы в конечном итоге начнете выполнять несколько задач, вам будет очень сложно управлять ими. Это банка с червями, которую вы не хотите открывать!   -  person David Wasser    schedule 13.06.2016


Ответы (3)


если вы хотите, чтобы ваша активность была в фоновом режиме, добавьте эту строку в oncreate активности

moveTaskToBack(true);
person vipin    schedule 04.04.2012
comment
Как заставить работать FLAG_ACTIVITY_MULTIPLE_TASK? (2 кнопки вкладки A и B, но должны заставить его скрыть приложение любой задачей кнопки вместо кнопки B назад к кнопке A в одном направлении) (FLAG_ACTIVITY_TASK_ON_HOME также в одном направлении.) - person Fruit; 25.12.2018
comment
[ОБНОВЛЕНИЕ] Я могу использовать глобальную ссылку для первого действия и сделать это act.moveTaskToBack(true);. - person Fruit; 25.12.2018
comment
Это должен быть ответ. @ 林果 皞. Я попробую сейчас и посмотрю, действителен ли он. - person Lorenzo Battilocchi; 24.04.2020
comment
Это приводит к тому, что белый экран очень быстро отображается и скрывается, разве нет никакого решения, чтобы полностью открыть действие в фоновом режиме, не показывая вообще ничего? - person highjump; 01.05.2020

Вы можете использовать эту строку в своем onCreate() методе:

moveTaskToBack(true);
person Anand M Joseph    schedule 04.04.2012
comment
Можете ли вы сказать мне, как я могу перезапустить действие после вызова moveTaskToBack(true); я использовал Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_MULTIPLE_TASK, но не перезапускал действие, оно сделало новое .. примечание ** i экземпляр одно и то же действие много раз - person medo; 28.07.2016

Вы же не хотите запускать Activity в фоновом режиме. Есть лучшие способы делать то, что вы хотите. Например, у вас может быть ваш Activity регистр для приема широковещательной передачи Intent. Он получит вызов onReceive(), даже если он находится в фоновом режиме. Вы можете определить, находится ли ваш Activity в фоновом режиме, установив для переменной значение true в onPause() и false в onResume(). Затем в onReceive(), если переменная true, вы находитесь в фоновом режиме.

person David Wasser    schedule 13.06.2016
comment
Вопрос здесь не в том, как проверить текущий статус активности, а в том, как предотвратить возвращение приложения, когда оно находится в фоновом режиме с отправляемым намерением. - person Damon Yuan; 13.02.2019
comment
@DamonYuan Вы не можете этого сделать. Если вы запустите Intent для Activity, хостинг задачи, который Activity будет перенесен на передний план. Вот как это работает. Вы не можете обойтись без этого. Что вы можете сделать, так это использовать другой механизм для получения желаемого поведения (например, BroadcastReceiver, который НЕ приведет к выводу задачи хостинга на передний план. - person David Wasser; 13.02.2019
comment
Это я понимаю. Итак, ваш исходный ответ не соответствует этому вопросу, но ваш комментарий выше правильный. - person Damon Yuan; 16.02.2019