Mówisz, że przeanalizowałeś wiele pytań w Internecie, ale na pewno nie zajmowałeś się tym czy tym. Dosłownie minęło 5 minut na wyszukiwanie.
W każdym razie, gdybym był tobą, aby rozwiązać ten problem, dołączyłbym finally
klauzula przy zamykaniu połączenia. Oznacza to, że deklarujesz pomocnika bazy danych jako statyczną zmienną instancji i używasz wzorca Fabryka abstrakcyjna, aby zagwarantować właściwość singleton.
Twoje ostrzeżenie ma miejsce, ponieważ nie zapewniasz, że tylko jeden DatabaseHelper
kiedykolwiek zaistnieje. Jeśli mInstance
obiekt nie został zainicjowany, zostanie utworzony. Jeśli został już utworzony, zostanie po prostu zwrócony.
Oto kod:
public ArrayList<ItemSubject> loadDataSubject() {
ArrayList<ItemSubject> arrayList = new ArrayList<>();
String select = "select * from " + TABLE_SUBJECT;
Cursor cursor = getData(select);
if (cursor != null && cursor.getCount() > 0) {
try {
cursor.moveToFirst();
for (int i = 0; i < cursor.getCount(); i++) {
String id = cursor.getString(cursor.getColumnIndex(TAG_ID));
String course = cursor.getString(cursor.getColumnIndex(TAG_COURSE_NAME));
....
ItemSubject objItem = new ItemSubject(id, courseId,...);
arrayList.add(objItem);
cursor.moveToNext();
}
finally {
if (cursor != null)
cursor.close();
}
}
return arrayList;
}
Ale skoro mówisz, że moim jedynym wkładem w twoje pytanie (na które już znalazłem odpowiedź w innych postach) jest udoskonalenie twojego braku podstawowej znajomości angielskiego, to nie jestem pewien, czy możesz zaakceptować to jako odpowiednią odpowiedź.