2012-03-01 2 views
0

Я работаю над приложением, в котором мне нужно подключение к серверу. Мне также нужно получить доступ к этому соединению из разных видов деятельности.
Для этого я собираюсь переопределить класс Application и создать там соединение. Это позволит легко взаимодействовать с каждым действием, поскольку я могу просто позвонить getApplicationContext().getConnection(), чтобы получить доступ к моему собственному классу связи.Освобождение ресурсов в приложении?

Проблема с этим подходом заключается в том, что класс Application не имеет метода onDestroy() или подобного, в котором я могу освободить соединение и любые связанные ресурсы. Я не думаю, что оставить его бездействующим до тех пор, пока не будет вызван onLowMemory(), это лучший подход.
Я не могу добавить настраиваемый метод release(), так как я не знаю, когда его можно назвать (есть два активных действия, которые могут быть последними, и в зависимости от действий пользователей они не знают, запускаться, когда активный отключается).

Есть хорошее решение этой проблемы, я должен просто игнорировать высвобождая ресурсы (до onLowMemory()) или есть лучший способ добиться того, чего я хочу (возможно, в Service, но будет несколько вызовов к основному классу он может стать слишком проблематичным для Сервиса?)

ответ

0

Просто используйте Singleton Дизайн-шаблон. Создание вашего класса Connection Singleton дает вам подход к доступу к соединению из разных видов деятельности и не забывайте обрабатывать многопоточность.

+0

Я надеялся избежать использования синглтона по двум причинам; сначала я думаю, что код был бы чище и имел бы больше смысла с соединением в контексте приложения, а во-вторых, потому что у меня все еще была бы проблема с выпуском ресурсов в одноэлементном режиме, но у singleton даже не было бы 'onLowMemory (onLowMemory)) '. Многопоточность уже ухаживает :) – Jave

+0

«есть две активности, которые могут быть последними, которые будут активны, и в зависимости от действий пользователей, которые они не знают, если другой должен быть запущен, когда активен выключен» - вы можете добавить статический счетчик для подсчета Деяний, и если есть только 1 открытый выпуск вызова активности(). –

+0

Да, это то, что я имел в виду тоже, это можно сделать как с помощью приложения, так и с одним синглтоном. Я рассматривал что-то вроде эталонного счетчика в приложении и когда больше нет активных ссылок, он запускает таймер, и если по истечении времени активных ссылок по-прежнему нет, отпустите ресурсы. В этом вопросе есть хорошая дискуссия о синглтонах против приложения: http://stackoverflow.com/questions/3826905/singletons-vs-application-context-in-android – Jave