2011-01-07 3 views
0

Я видел это сообщение здесь (http://stackoverflow.com/questions/151777/how-do-i-save-an-android-applications-state). Похоже, у меня такая же проблема.Android: Confused о состоянии приложения

У меня есть приложение, которое прослушивает аудиопоток (используя объект mediaPlayer). Если я нажму кнопку «Домой», она продолжит потоковое воспроизведение и спрячет мое приложение. Затем, в более позднем пункте, я могу вернуться к своему приложению и нажать «Остановить», когда закончите. Это то, чего я хочу. Если, однако, я нажимаю кнопку «Назад», когда я позже открываю приложение снова, приложение было перерисовано из свежего. Текстовые поля, кнопки, все сбрасываются, как только я открыл приложение в первый раз, поэтому я не могу остановить свой аудиопоток. Нажатие на остановку ничего не делает, потому что приложение «забыло», что оно потоковое (поток работает под отдельным обработчиком из основного потока пользовательского интерфейса, поэтому я предполагаю, что после его «перезагрузки» он потерял следы своих обработчиков?).

Почему это происходит с кнопкой «Назад» и как я могу остановить ее?

ответ

0

Переместите функциональность потоковой передачи в службу Android. Используйте Activity для привязки к Сервису и для взаимодействия с ним.

+0

Это все еще оставляет мне проблему, это не обязательно должно быть так, но я думаю, что это хорошая идея: у меня есть кнопка с надписью «start». Когда вы нажимаете на него, если его текст «начинается», он запускает обработчик, в котором выполняется поток, и изменяет текст кнопки на «stop». Когда вы нажимаете и текст «останавливается», он останавливает поток и изменяет текст на «start». – jwbensley

+0

Если я нажму кнопку и запустил поток (и текст кнопки изменится на «остановка»), я затем нажмите «Назад» и, как упоминалось выше, перейдите к моему бизнесу, слушающему поток, а затем вернитесь в мое приложение, чтобы остановить поток, интерфейс перерисовывается, и кнопка говорит «start», поэтому я не могу ее остановить? Нажав кнопку «Пуск», запускается другой поток, поэтому теперь два из них работают немного вне времени, а затем нажатие кнопки остановки просто останавливает этот новый экземпляр потока, старый все еще запущен. Если бы я использовал сервис с одной кнопкой, как это, когда я вернусь в приложение, он все равно начнет «старт», а не «остановить», правильно? – jwbensley

+0

Да, это правильно. Вы должны сохранить состояние своей деятельности. Или, если вы используете услугу, обратитесь в службу, если у нее есть работающий поток. Нажатие Назад и перезапуск Activity приведет к вызову onCreate. Так что используйте что-то вроде saveInstanceState.getBoolean («HAS_RUNNING_STREAM») – 0xf3f

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