2011-08-27 32 views
18

Điều gì xảy ra nếu bạn không bao giờ đóng kết nối? Tôi biết bạn nhận được trường hợp ngoại lệ nếu bạn không đóng nó và cố gắng mở một số khác, nhưng điều gì sẽ xảy ra nếu bạn có một singleton toàn cầu, và bạn chỉ đơn giản là không đóng nó? Bất kỳ ý tưởng?Không bao giờ đóng kết nối Android SQLite

Trả lời

25

Rạn nứt được hình thành trong liên tục không gian, đe dọa tuyệt chủng của tất cả sự sống trong vũ trụ, cho đến ngày được cứu bởi một nhóm người trong trang phục vui tươi sáng màu (bao gồm một số với capes, nếu bạn có thể tin được).

Ồ, không, chờ đã. Đó chỉ là một cuốn truyện tranh.


Thực ra, không có gì xảy ra nhiều. Tôi đã được các nhân viên Google và các chuyên gia Android khác bảo rằng, do cách SQLite hoạt động (đặc biệt là việc xử lý các giao dịch), không có gì xấu xảy ra nếu bạn không đóng cơ sở dữ liệu. Trên thực tế, nếu bạn triển khai một nhà cung cấp nội dung, bạn sẽ có hiệu ứng tương tự, vì nhà cung cấp nội dung không được gọi với bất kỳ phương thức nào onDestroy(), nghĩa là bạn sẽ không bao giờ có cơ hội đóng cơ sở dữ liệu của mình. Nhà cung cấp nội dung sẽ chỉ hoạt động cho đến khi quá trình chấm dứt. Cá nhân, điều này thực sự gây lỗi cho tôi, đó là một trong những lý do tôi cố gắng giảm thiểu việc sử dụng các nhà cung cấp nội dung của mình.

+4

Nhà cung cấp nội dung là một trong những phần ít được hiểu và bị lạm dụng nhiều nhất của Android. Chúng được đẩy mạnh vào tài liệu hoặc ít nhất là tài liệu ban đầu, nhưng chúng chỉ nên được sử dụng nếu bạn định chia sẻ dữ liệu với ứng dụng của bên thứ ba. Tôi đã nhìn thấy mọi người sử dụng chúng chỉ để serialize DB truy cập, đó là khủng khiếp. Dù sao, tôi figured có một kết nối tĩnh sẽ được sử dụng tốt. Tôi đã làm rất nhiều công việc kiểm tra những gì xảy ra với nhiều kết nối. Tóm tắt, nó xấu: http://www.touchlab.co/blog/android-sqlite-locking/. Làm việc trên một rehash của quản lý kết nối cho ORMLite. Cảm ơn. –

+0

Đó là một bài đăng trên blog tuyệt vời, BTW. – CommonsWare

+0

Bài đăng trên blog đó dường như không tồn tại nữa. Liên kết mới? – John

Các vấn đề liên quan