Могу ли я запретить Android убивать мое приложение?

Я не смог найти подходящего приложения для потоковой передачи MP3-файлов с URL-адреса, которое могло бы работать в фоновом режиме и которое соответствовало бы моим требованиям, поэтому я решил написать его самостоятельно. Оказывается, невероятно легко транслировать MP3 с помощью родного MediaPlayer, если вы используете Froyo или лучше, как я.

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

Итак, есть ли что-то, что я могу сделать, чтобы убить другие процессы, если нужны ресурсы вместо моего потокового mp3-приложения?

Что я пробовал:

android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);

Но это нехорошо.


person Nick    schedule 30.07.2011    source источник
comment
Может быть, у вас также есть потоковая передача в этой игре, хотя не уверен, бывает, что Android не может воспроизводить несколько потоковых аудио......... stackoverflow.com/questions/5642508/   -  person viv    schedule 30.07.2011
comment
Я тоже это слышал, но до того, как моя активность была одиночной, я мог запускать ее по крайней мере два раза одновременно с потоковой передачей разных файлов.   -  person Nick    schedule 30.07.2011


Ответы (5)


Вам нужно сделать службу приоритетной службой, если вы еще этого не сделали. Службы переднего плана должны отображать значок на панели уведомлений, и система Android не уничтожит их, если только не возникнет экстремальная нехватка памяти.

Ознакомьтесь с документами для startForeground ()

person Community    schedule 30.07.2011
comment
Потрясающий. Следующим моим шагом было добавить уведомление для него. Похоже, что служба переднего плана справится с обоими. - person Nick; 30.07.2011
comment
Я думаю, у вас есть решение. Ответ ниже не является решением, поскольку зависит от версии Android. - person Cocorico; 07.01.2014

Я обнаружил, что после того, как мой Droid Incredible был обновлен до Gingerbread (2.3.4), он внезапно заработал. Я вообще ничего не менял, просто в Gingerbread он не умирает, как во Froyo. Я знаю, что в Gingerbread были улучшения медиаплеера, поэтому я должен предположить, что во Froyo была ошибка, которая была исправлена ​​в Gingerbread.

person Nick    schedule 18.11.2011

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

person AlfredoVR    schedule 30.07.2011

Это связано с действием жизненным циклом. ОС может убить ваше приложение, если ему нужна память. Возможно, вам придется рассмотреть возможность использования сервиса.

person Greg    schedule 30.07.2011

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

person Aperium    schedule 30.07.2011