Казвате, че сте разгледали много въпроси онлайн, но определено не сте разгледали това или това. Буквално се появи след 5 минути търсене.
Както и да е, ако бях на твое място, за да разреша този проблем, бих включил finally
клауза при затваряне на връзката. Това означава, че ще декларирате своя помощник на базата данни като статична променлива на екземпляр и ще използвате модела Abstract Factory, за да гарантирате свойството singleton.
Вашето предупреждение се случва, защото не гарантирате, че само един DatabaseHelper
ще съществува във всеки един момент. Ако mInstance
обектът не е инициализиран, такъв ще бъде създаден. Ако вече е създаден, той просто ще бъде върнат.
Ето кода:
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;
}
Но тъй като казвате, че единственият ми принос към въпроса ви (на който вече беше отговорено в други публикации) е да прецизирам липсата ви на елементарен английски, тогава не съм толкова сигурен дали можете да приемете това като адекватен отговор.