Я обычно в небольших приложениях объявляю SharedPreferences
статическим, и SQLiteDatabase
статическим, может ли это стать причиной утечки памяти? Или мне лучше в каждом нужном классе/фрагменте объявлять SharedPreferences
или SQLiteDatabase
, проделывать нужные операции и закрывать их с выходом?
Само объявление статичным экземпляры класса менеджера БД, или Shared, наоборот скорей всего избавит от лишних утечек, ну это если рассуждая что такое static. В целом дальше зависит от использования. Ликнуть Shared я даже не представляю как это возможно при static, а вот с БД действительно можно такое устроить причем как при записи, так и при чтении. Ну вот например если вы будете ставить курсор и не закрывать его, и то в это случае вы получите что-то типо Object Sqlite.* was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
Поэтому даже рассуждая так, можно сказать как в документации SQLite will never leak memory. This is true even in the face of memory allocation failures or other system errors.
Вкратце в Sqlite нет мемори ликов, если вы даже сами накосячите. Но иногда можно встретить, такое
Leak found
Caused by: java.lang.IllegalStateException: SQLiteDatabase created and never closed
Существует много подходов, как использовать БД Sqlite, но есть пару докладов, в которых рассказывается, что самый лучший способ для ANdroid это открыть при запуске (в Application классе) и закрывать при выходе. Иначе как бы вы не использовали коннекты к БД с разных конекстов, то ловите database is locked
, синглтоном но можете словить attempt to re-open an already-closed object: SQLiteDatabase
поэтому я бы советовал не заниматься преждевременной оптимизацией БД, особенно в маленьких приложениях. Сам static ужасен для структуры проекта, в любом случае лучше не использовать его.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Возможно ли как-то получить верхний пиксель (верхнюю границу) у изображения?
Не знаю, можно ли выкладывать такие просьбы тут, но руку мне за это не отрежут
Неоднократно был задан данный вопрос, исследуя его я сделал очевидные выводы :