SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Không thể ngăn rò rỉ đối tượng SQLiteConnection

Bạn nói rằng bạn đã xem xét nhiều câu hỏi trực tuyến, nhưng bạn chắc chắn không xem xét điều này hoặc điều này. Theo đúng nghĩa đen, nó đã mất 5 phút để tìm kiếm.

Dù sao đi nữa, nếu tôi là bạn, để giải quyết vấn đề này, tôi sẽ đưa vào finally mệnh đề khi đóng kết nối. Điều này có nghĩa là bạn sẽ khai báo trình trợ giúp cơ sở dữ liệu của mình dưới dạng biến phiên bản tĩnh và sử dụng mẫu Abstract Factory để đảm bảo thuộc tính singleton.

Cảnh báo của bạn đang xảy ra vì bạn không đảm bảo rằng chỉ có một DatabaseHelper sẽ luôn tồn tại tại bất kỳ thời điểm nào. Nếu mInstance đối tượng chưa được khởi tạo, một đối tượng sẽ được tạo. Nếu một cái đã được tạo thì nó sẽ đơn giản được trả lại.

Đây là mã:

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;
}    

Nhưng vì bạn nói rằng đóng góp duy nhất của tôi cho câu hỏi của bạn (đã được trả lời trong các bài viết khác) là để cải thiện sự thiếu hụt tiếng Anh sơ cấp của bạn, nên tôi không chắc liệu bạn có thể chấp nhận đây là một câu trả lời thích đáng hay không.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tốt hơn nên sử dụng Bộ điều hợp con trỏ hoặc Bộ điều hợp Mảng

  2. Làm cách nào để sửa lỗi không tìm thấy url của nhà cung cấp nội dung trong Android Content provider?

  3. SQLite - Cập nhật dữ liệu

  4. Không thể mở cơ sở dữ liệu ở chế độ đọc / ghi

  5. Cách Unicode () hoạt động trong SQLite