Tôi đang tìm kiếm thông tin về SQLite trên Android và đọc một số chương của một số sách về Lập trình Android, nhưng tôi không biết để thực sự sử dụng SQLite trên Android một cách chính xác.Sử dụng đúng Sqlite trên Android (SQLiteOpenHelper, kết nối, chủ đề chính, v.v ...)
Tôi đang phát triển một ứng dụng có Hoạt động, Dịch vụ và BroadcastReceivers và tất cả chúng phải đọc và ghi dữ liệu trong cơ sở dữ liệu. Vì vậy, tôi có một số câu hỏi:
- Nơi nào là nơi tốt nhất để tạo ví dụ
SQLiteOpenHelper
? Tôi đọc về điều này, và có vẻ như cách tốt nhất là chỉ cóSQLiteOpenHelper
cho tất cả ứng dụng. - Khi nào và ở đâu, tôi có cần phải nhận đối tượng
SQLiteDatabase
bằng cách gọidbHelper.getReadableDatabase()
(hoặcgetWritableDatabase
)? Tôi cần phải làm điều đó trên mỗi truy vấn, đóng nó sau mỗi truy vấn? - Tôi đọc rằng tôi không bao giờ nên thực hiện các thao tác cơ sở dữ liệu trong chuỗi chính, vì vậy tôi đang tạo một tác vụ Async cho mỗi hoạt động cơ sở dữ liệu tôi làm trong một Hoạt động, đây có phải là cách tốt nhất không?
Cảm ơn bạn đã bỏ phiếu tiêu cực ¬¬ –
nơi tốt nhất để tạo cá thể SQLiteOpenHelper nằm trong phương thức 'onCreate' của' ContentProvider' ... tốt nhất để sử dụng 'getWritableDatabase()' là trong 'delete' /' phương thức insert'/'update' của' ContentProvider' và 'getReadableDatabase()' trong 'truy vấn' ... bạn không cần đóng các cơ sở dữ liệu đó ... để tránh sử dụng thao tác cơ sở dữ liệu trên UI, bạn có thể dùng' Loaders' với CP ... tôi biết rằng viết CP là đau trong ** nhưng với CP cũng bằng văn bản bạn tránh nhiều vấn đề (chẳng hạn như truy cập cơ sở dữ liệu từ nhiều theread) – Selvin
Cảm ơn Selvin. Tôi muốn sử dụng SQLite mà không cần sử dụng ContentProvider, vì tôi không cần chia sẻ bất kỳ dữ liệu nào với các ứng dụng khác. Tôi đã đọc rằng tôi không cần nhà cung cấp nội dung trong ứng dụng của mình: http://touchlabblog.tumblr.com/post/32793099735/training-sqlite#_=_. Không có cách nào để sử dụng SQLite một cách chính xác mà không cần sử dụng một ContentProvider? –