Предотвращение дублирования деятельности
Итак, я новичок в 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