2011-08-09 3 views
0

Привет У меня есть широковещательный приемник со следующим кодом.Проблема при отображении активности от BroadcastReceiver

1. Intent i = new Intent(context, A.class);  
    2. i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    3. context.startActivity(i); 

Это прекрасно работает и моя деятельность запустился, но она начинается на верхней части моей основной деятельности, т.е. B. То, что я хочу, что от моего радиовещательного приемника я должен быть в состоянии начать активность А, таким образом, что он делает не начинайте с вершины B. Почему B всегда начинается в фоновом режиме. Что я делаю неправильно.

Кроме того, для обозначения деятельности A есть тема.Dialog.

Пожалуйста, дайте мне знать ваши мысли.

+0

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

ответ

0

новая деятельность должна начаться в верхней части существующих мероприятий.

Если вы хотите что-то запустить, не входя в стек истории деятельности, возможно, это что-то не должно быть Activity, а вместо этого Service?

Редактировать: Я думаю, вы можете изменить это поведение с FLAG_ACTIVITY_NEW_TASK в сочетании с android:launchMode="singleTask" в манифесте. (см. documentation on launch mode)

+0

Это обсуждение идет в другом направлении. Позвольте мне еще раз перефразировать ... – user835791

+0

Да, я не вижу каких-либо изданий или комментариев в вашем вопросе ... – rds

+0

Я хочу начать действие, чтобы показать пользователю некоторый пользовательский интерфейс, когда намерение получено BR. У меня есть приложение, которое имеет несколько активных действий, один из них, который в настоящее время является основным видом деятельности, то есть активностью B. Скажем, мое приложение имеет 5 видов деятельности A, B, C, D, E. Теперь я нахожусь на главном экране без стека истории событий, и событие получено BR. Теперь я хочу отобразить активность A. Это происходит, но активность B (которая является моей основной деятельностью) всегда появляется в конце действия A (даже если нет стека истории, поскольку я был на главном экране, когда было получено намерение). Надеюсь, что это уточняет это немного больше. – user835791

0

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

Если вам не нужно запускать его поверх B, как насчет его запуска из сервиса? .Let Activity. Оставайтесь так, как есть.

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

Наконец, если вы действительно хотите, чтобы начать активность A и B будет сверху затем начать активность B после запуска

+0

Нет, это поведение происходит на главном экране. Таким образом, я нахожусь на главном экране и получаю намерение в своем трансляционном вещателе, который запускает активность A, используя код, упомянутый выше. Но каждый раз он начинается с Activity B в фоновом режиме. Обратите внимание, что деятельность B является основным видом деятельности, и деятельность A не является основным видом деятельности. – user835791

+0

Я действительно хочу начать действие, чтобы показать пользователю некоторый пользовательский интерфейс, когда намерение получено моим транслятором. У меня есть приложение, которое имеет несколько активных действий, один из которых в настоящее время является основным видом деятельности, то есть активностью B. Скажем, мое приложение имеет 5 видов деятельности a, b, c, d, e. Теперь я нахожусь на главном экране без стека истории событий, и событие получено BR. Теперь я хочу отобразить активность A. Это происходит, но активность B (которая является моей основной деятельностью) всегда появляется в конце действия A (даже если нет стека истории, поскольку я был на главном экране, когда было получено намерение) – user835791

+0

Спасибо , launchMode помог мне. Я использую android: launchMode = "singleInstance", который работает для меня отлично.Теперь проблема в том, что после того, как я нажму и нажмите кнопку HOME, чтобы увидеть последние приложения, когда я выбираю кнопку «Приложение», она приводит меня к Activity A, тогда как я хочу перейти к Activity B (это моя основная деятельность). – user835791

0

I думаю Вы хотите, чтобы вы начали приложение с другого вида деятельности. Вы можете отредактировать файл AndroidManifest.xml, чтобы сначала начать другую деятельность.

EDIT: Вот пример:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".MainActivity" <-this will start first 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name =".otherActivity" 
     android:theme="@android:style/Theme.Dialog"> 
    </activity> 
    <activity android:name=".anotherActivity"></activity> 
</application> 

Смежные вопросы