Říkáte, že jste se podívali na mnoho otázek online, ale rozhodně jste se nezabývali tímto nebo tímto. Doslova to trvalo 5 minut hledání.
Každopádně, kdybych byl vámi, k vyřešení tohoto problému bych zahrnul finally
klauzule při uzavírání spojení. To znamená, že byste svou pomocnou databázi deklarovali jako statickou proměnnou instance a použili byste vzor Abstract Factory k zaručení vlastnosti singleton.
Vaše varování se děje, protože nezajišťujete, že pouze jeden DatabaseHelper
bude někdy existovat v daném čase. Pokud mInstance
objekt nebyl inicializován, bude vytvořen. Pokud již byl vytvořen, bude jednoduše vrácen.
Zde je kód:
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 protože říkáte, že mým jediným příspěvkem k vaší otázce (která již byla zodpovězena v jiných příspěvcích) je upřesnění vaší chybějící základní angličtiny, pak si nejsem jistý, zda to můžete přijmout jako adekvátní odpověď.