Я работаю над приложением, в котором мне нужно подключение к серверу. Мне также нужно получить доступ к этому соединению из разных видов деятельности.
Для этого я собираюсь переопределить класс Application
и создать там соединение. Это позволит легко взаимодействовать с каждым действием, поскольку я могу просто позвонить getApplicationContext().getConnection()
, чтобы получить доступ к моему собственному классу связи.Освобождение ресурсов в приложении?
Проблема с этим подходом заключается в том, что класс Application
не имеет метода onDestroy()
или подобного, в котором я могу освободить соединение и любые связанные ресурсы. Я не думаю, что оставить его бездействующим до тех пор, пока не будет вызван onLowMemory()
, это лучший подход.
Я не могу добавить настраиваемый метод release()
, так как я не знаю, когда его можно назвать (есть два активных действия, которые могут быть последними, и в зависимости от действий пользователей они не знают, запускаться, когда активный отключается).
Есть хорошее решение этой проблемы, я должен просто игнорировать высвобождая ресурсы (до onLowMemory()
) или есть лучший способ добиться того, чего я хочу (возможно, в Service
, но будет несколько вызовов к основному классу он может стать слишком проблематичным для Сервиса?)
Я надеялся избежать использования синглтона по двум причинам; сначала я думаю, что код был бы чище и имел бы больше смысла с соединением в контексте приложения, а во-вторых, потому что у меня все еще была бы проблема с выпуском ресурсов в одноэлементном режиме, но у singleton даже не было бы 'onLowMemory (onLowMemory)) '. Многопоточность уже ухаживает :) – Jave
«есть две активности, которые могут быть последними, которые будут активны, и в зависимости от действий пользователей, которые они не знают, если другой должен быть запущен, когда активен выключен» - вы можете добавить статический счетчик для подсчета Деяний, и если есть только 1 открытый выпуск вызова активности(). –
Да, это то, что я имел в виду тоже, это можно сделать как с помощью приложения, так и с одним синглтоном. Я рассматривал что-то вроде эталонного счетчика в приложении и когда больше нет активных ссылок, он запускает таймер, и если по истечении времени активных ссылок по-прежнему нет, отпустите ресурсы. В этом вопросе есть хорошая дискуссия о синглтонах против приложения: http://stackoverflow.com/questions/3826905/singletons-vs-application-context-in-android – Jave