Рекомендуемый способ сохранения распределенных данных между жизненным циклом сервиса - PullRequest
0 голосов
/ 09 ноября 2018

Если предположить, что у меня есть служба (в отдельном процессе), которой нужно выделить большой файл памяти (сотни МБ в основном), а служба уничтожается и создается снова несколько раз в течение цикла питания устройства, есть ли рекомендуемый способизбегать выделения / освобождения этого файла памяти каждый раз, когда я создаю / уничтожаю свой сервис?

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

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

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

...