Du säger att du tittade på många frågor på nätet, men du tittade definitivt inte på den här eller den här. Det dök bokstavligen upp 5 minuter efter sökning.
Hur som helst, om jag var du, för att lösa det här problemet, skulle jag inkludera en finally
klausul när anslutningen stängs. Det betyder att du skulle deklarera din databashjälpare som en statisk instansvariabel och använda abstrakt fabriksmönstret för att garantera singleton-egenskapen.
Din varning inträffar eftersom du inte säkerställer att endast en DatabaseHelper
någonsin kommer att finnas vid en given tidpunkt. Om mInstance
objektet inte har initierats, ett kommer att skapas. Om en redan har skapats kommer den helt enkelt att returneras.
Här är koden:
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;
}
Men eftersom du säger att mitt enda bidrag till din fråga (som redan hade besvarats i andra inlägg) är att förfina din brist på elementär engelska, då är jag inte så säker på om du kan acceptera detta som ett adekvat svar.