Насколько я понимаю, нельзя ожидать, что синглтон будет хранить постоянные данные в приложениях Android, потому что приложение может быть уничтожено и воссоздано несколько раз в «очевидном жизненном цикле» приложения. Это само по себе не проблема для меня. Проблема заключается в том, что именно происходит, когда приложение проходит через этот процесс уничтожения -> создания.
Я читал на форумах, что приложение будет воссоздано в новом процессе, и я предполагаю, что старый процесс со всем его управлением памятью будет уничтожен. Однако означает ли это, что разработчик должен очистить все одиночки и логические деревья с узлами, содержащими взаимные ссылки? Или уничтожение процесса автоматически все подчищает? Я не опытный java-разработчик, поэтому мне многое еще неясно в сборщике мусора.
Конкретный проект, над которым я работаю, запускает только одно приложение в течение всего времени безотказной работы устройства. С точки зрения настольных компьютеров не было бы опасности утечки памяти через синглтоны, поскольку приложение закрывается только при выключении устройства и все время находится в одном и том же процессе. Однако Android усложняет задачу.
Кстати, какой хороший детектор утечки памяти для Android с помощью эмулятора?