Chyba źle zrozumiałeś działanie javy i dalvika. On nie niszczy obiektów, do których są dowiązania. Jeśli istnieje obiekt który ma dowiązanie do danego obiektu to on nie zostanie usunięty nawet jeśli skończy się pamięć. Jak sobie wyobrażasz to, że w czasie działania aplikacji znika Ci jakiś obiekt?
Nie prawda. Może zniszczyć, inna sprawa, co rozumiesz pod pojęciem "są dowiązania"? Activity które jest w tle może zostać zniszczone, jednak trudno tą sytuację rozpatrywać w tym kontekście - są do niej powiązania czy nie? Niby na stosie Activity jest, ale to nie znaczy, że jako bezpośrednie powiązanie do obiektu Activity. "To" z dowiązaniami obowiązuje jak najbardziej, ale lokalnie, nie globalnie w systemie (czy do Application trzymasz jawnie dowiązanie?).
Właśnie w javie to jest zrozumiałe że mi nic nie zniszczy bo ogólnie java desktopowa nie niszczy niczego bez mojej zgody (no chyba że cały proces jak będzie brak pamięci). Ale dalvik może usunąć aktywność jeżeli nie będzie na szczycie stosu i będzie mu pamięci brakować. Np. mam aplikację A która otwiera aplikację B i jeżeli zajmie dużo pamięci to zniszczy aktywność A,a przy powracaniu utworzy ją na nowo, Wszystko wygląda jakby z aplikacją nic się nie stało poza tym że np. pola się zresetują jeżeli ich nie zapisujemy. Więc jeżeli dalivk usuwa aktywności to nie mam pewności że czegoś innego też nie usunie. Singleton wprawdzie ma odwołanie do samego siebie ale nie jest przyczepiony do aktywności. Już nie mam pojęcia jak to naprawdę w androidzie wygląda. Mógłby ktoś mi opisać jak wygląda tworzenie procesu (nie aktywności) w androidzie i jego życie?
No i nadal pozostaje kwestia usług lokalnych. Jaki jest sens ich tworzenia skoro można to zrobić tak jak powiedziałem w pierwszym poś
Tak, takie Activity może zostać zniszczone. Mało tego, zauważyłem nawet, że na niektórych urządzenia niszczenie odbywa się znacznie szybciej, tak jakby one miały taki sposób zarządzania pamięcią (zminimalizowane, usuńmy). Jednak to nie problem, przecież to samo się dzieje gdy zmieniasz orientacje ekranu (Activity jest niszczone i odtwarzane). Jasne, jak masz swoje jakieś specyficzne dane to musisz o nie sam zadbać - standardowe, tj. kontrolki itd. system sam zapamiętuje (są do tego specjalne metody wywoływane przed zniszczeniem).
Singleton nie zostanie zniszczony do póki Application nie zostanie zniszczony. Przy czym ważna uwaga, jeśli zamkniesz główną Activity to tak jakbyś to zrobił - przy ponownym odpaleniu Application wszystkie zmienne globalne powinny być wyzerowane (jak to jest typowo przy tworzeniu nowego obiektu). Services są ogólnie po to, żeby powiedzieć systemowi, że to coś ma działać, chcesz, żeby ten obiekt istniał i sam podejmiesz decyzje, że należy go zwolnić (zatrzymasz usługę - mylące troszkę, bo usługa w Androidzie to nie to co "normalna" usługa).
Ogólnie zasada jest taka, jeśli system nie uzna czegoś za zbędne to ci tego nie zniszczy. Zbędna jest Activity która jest niewidoczna, zbędna jest także aplikacja która jest zminimalizowana, itd. Zresztą poza drobnymi różnicami (system mobilny nastawiony na oszczędzanie zasobów) nie ma tu wielu różnic w stosunku do desktopa. Czy na desktopie singleton może istnieć jeśli nie istnieje aplikacja bo ktoś ją zamkną?