Закриття бд, курсорів - stack overflow російською

Підкажіть будь ласка, навіщо (і як правильно) закривати:

  1. SQLiteDatabase клас
  2. клас курсора (до речі, як себе поведе адаптер, підключений до закритого курсору)
  3. клас-спадкоємець SQLiteHelper

Яка практика використання? В частині - відкрив / закрив об'єкт. Може є якась послідовність закриття цих об'єктів?

У мене є кілька класів для роботи з БД, але в деяких випадках я поспіль кілька разів використовував відкриття бд, на що андроїд лається. тому хочу запитати у професіоналів, як правильно робити? Може є підхід, про який я не знаю просто.

Щодо курсорів - зараз рекомендується використовувати клас CursorLoader. який повністю управляє життєвим циклом курсора, стежить за його своєчасним відкриттям і закриттям, а так само працює з ним в паралельному потоці, що наилудшую чином позначається на продуктивності додатка.
При цьому в такому класі можна перевизначити метод вибірки даних, щоб позбавити себе від необхідності заводити ще й ContentProvider. як то потрібно в дефолтной реалізації.

Щодо закриття БД.
В одній, дуже змістовною, дискусії, Діана Хакборн (Dianne Hackborn), далеко не остання людина в підрозділі андроїд гугла, пояснювала всім зацікавленим громадянам, що підключення до БД не тільки не треба закривати, а що це ще й не дуже то добре - закривати це підключення.
При закритті програми / класу, що використовує підключення до БД, збирач сміття знищить і класи БД і все буде в нормі, в іншому ж випадку відбуваються якісь страшні речі.

У своїх проектах я використовую Realm і взагалі не заморочуюся з БД SQLite, вже навіть і не згадую ці класи-помічники, курсори, відкриття-закриття. безліч всяких обгорток та інший "жах". Все швидко, дуже зручно і просто - працюєш, як з ORM (за принципом класів-моделей), але це нативная БД без прошарків і без SQLite