Сохранять объекты после завершения активности / приложения - PullRequest
0 голосов
/ 23 января 2012

Мне нужно получить доступ к объектам после того, как моя активность была уничтожена (или даже после того, как приложение было закрыто).

Объект является декодером AAC и воспроизводится в фоновом режиме, если пользовательпопадает домой или остается в приложении.Однако при завершении действия / приложения объект теряется.Это означает, что если воспроизводится поток aac, его невозможно остановить (кроме перезапуска устройства), а последующие посещения приложения просто накладывают потоки поверх последнего.

Я думал о добавленииобъект для службы, однако я понятия не имею, как это будет работать, или если это даже хорошая идея.Я также подумал, что ответ может заключаться в статических переменных, однако я предполагаю, что после выхода из приложения (или принудительного завершения / уничтожения из-за памяти / чего угодно) даже эти объекты теряются.

Библиотека, которой я являюсьдля декодера aac используется http://code.google.com/p/aacdecoder-android (если это помогает).

В настоящее время я полностью воспроизводлю поток в сервисе.Это позволяет обойти проблему, описанную выше, однако мне нужно иметь возможность обновлять интерфейс, когда приложение запущено (и когда пользователь перейдет к приложению в будущем).Так что это проблема.Я понимаю, что этот мог бы использовать намерение вещания, но мне интересно, сложнее ли это, чем необходимо.

Есть ли способ обойти это?

Спасибовы.

1 Ответ

2 голосов
/ 23 января 2012

Я думал о добавлении объекта в службу, однако я понятия не имею, как это будет работать, или если это даже хорошая идея.

Мало того, что это хорошая идея, но это ваш единственный реальный вариант. Вот пример проекта , показывающий (поддельный) аудио-клиент, отправляющий команды (поддельному) аудио-сервису, который обрабатывает воспроизведение и указывает Android, что служба является частью пользовательского интерфейса.

Я также думал, что ответ может заключаться в статических переменных, однако я предполагаю, что после выхода из приложения (или принудительного завершения / уничтожения для памяти / чего-либо еще) даже эти объекты будут потеряны.

Как только ваш процесс завершается, объект исчезает.Конечно, так же, как и воспроизведение аудио.

Служба фактически является маркером для ОС, указывающим на то, что у вас есть код, который все еще работает, поэтому Android с меньшей вероятностью завершит ваш процесс, чтобы освободить ОЗУ длязапустить другие приложения.Отмечая его как часть пользовательского опыта на переднем плане, еще больше уменьшается, но не устраняется вероятность того, что Android прекратит ваш процесс.

Я понимаю, что обойти это можно было бы с помощью намерения вещания, ноИнтересно, сложнее ли это, чем необходимо.

Это не намного проще, чем трансляция.Это не единственный вариант - вы могли бы использовать Messenger или PendingIntent или несколько других методов.

Есть ли способ обойти это?

Зачем вам нужно "обойти" правильный ответ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...