Предотвращение дублирования деятельности

Итак, я новичок в Java и создаю приложения для Android, но не новичок в программировании. Я прочитал большую часть сайта developer.android.com, но я не смог найти это:

Я хочу удостовериться, что определенное действие не работает более одного раза в одно и то же время. Итак, у нас есть задача, подобная этой:
Деятельность A) TabActivity, которая запускает Activity B) ListView, который открывается нажатием кнопки, Activity C), который является интерфейсом для объекта медиапланера

Прямо сейчас, всякий раз, когда кто-то нажимает кнопку "назад", пока на C (что, скорее всего, потому, что они будут слушать потоковый 1-часовой mp3), а затем нажимает другой элемент списка, вместо того, чтобы возвращаться к C, C открывается второй раз, и воспроизводятся два потока. Конечно, мне нужен только один экземпляр C, и я хочу второй щелчок на элементе списка, чтобы вернуть C назад. Это также может быть полезно для целей уведомления.

Я фыркнул с флагами (особенно FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP и FLAG_ACTIVITY_REORDER_TO_FRONT), но пока успеха нет.

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

Спасибо заранее,

Ответы

Ответ 1

Вам нужно указать свою активность как "singleTask" или "singleInstance" в манифесте. Я не помню точных различий между ними, но должен делать то, что вы хотите. SingleInstance просто делает что-то другое со стеком.

Пример:

<activity android:name="MainActivity" android:launchMode="singleInstance"></activity>

Вы можете обрабатывать новые вызовы startActivity() из одного и того же экземпляра активности с помощью onNewIntent()

Ответ 2

У меня есть это!

Для тех, кто читает этот вопрос и хочет узнать сводку: я ошибочно думал, что более одного действия было запущено, но появилось больше экземпляров MediaPlayer, где выполняется. Я сделал своего медиаплеера членом класса и теперь контролирую его из события onStart().

Я использую SharedPreferences, чтобы проверить, нужен ли поток reset и изменить источник, или продолжить работу и просто показать интерфейс.

Спасибо за все ваши реакции. Действительно помог мне.

Ответ 3

Просто измените имена пакетов в .xml

EX: com.org.MainActivity изменить на      .org.MainActivity

Это работает для меня..... yup