У меня есть приложение, в котором есть служба, которая использует ArrayList для хранения чисел в фоновом режиме в течение очень долгого времени
Если «очень долгое время» больше, чем «несколько секунд, или если пользователь явно запрашивает его запуск», то у нас проблемы.
Проще говоря, ваш сервис не будет жить "очень долго". Пользователь прекратит работу с помощью программы-убийцы, или пользователь прекратит работу с помощью приложения «Настройки», или Android прекратит работу из-за чрезмерного возраста. Слишком много разработчиков теряют сервисы, вызывая снижение производительности устройства.
Очень немногие службы действительно должны быть запущены, за исключением кратких периодов времени (например, при загрузке большого файла) или по запросу пользователя (например, музыкальный проигрыватель).
Можно ли с уверенностью сказать, что эта переменная никогда не будет обнуляться GC или системой, или есть ли способ предотвратить это?
Он будет жить столько, сколько длится процесс. Процесс будет действовать до тех пор, пока вы не остановите службу (при условии, что другие компоненты не запущены) или пока пользователь не перезагрузит свой телефон, или пока не произойдет какой-либо из сценариев, описанных ранее (например, убийца задач).