2012-06-21 23 views
7

Tôi đang mở rộng lớp SQLiteOpenHelper. Nhà xây dựng của tôi làLớp SQLiteOpenHelper làm gì với tham số ngữ cảnh?

public MyDatabaseHelper(Context context) { 
    super(
     context,   // ??? 
     "MyDatabase.db", // Database name 
     null,   // Cursor factory 
     1    // database version 
    ); 
} 

Trình tạo SQLiteOpenHelper làm gì với thông tin ngữ cảnh?

Đối với ứng dụng của tôi, hàm tạo sẽ hoạt động giống nhau bất kể trạng thái chương trình (ngữ cảnh). Tôi có thể vượt qua null trong bối cảnh với bất kỳ vấn đề nào trong tương lai không?

Trả lời

6

Nếu bạn cung cấp giá trị null, nó sẽ tạo cơ sở dữ liệu trong bộ nhớ thay vào đó, nhưng bạn sẽ cần cung cấp null cho tham số tên cơ sở dữ liệu để nó được xử lý đúng cách.

này được diễn tả trong tài liệu hướng dẫn xây dựng cho bối cảnh

bối cảnh sử dụng để mở hoặc tạo tên cơ sở dữ liệu của cơ sở dữ liệu tập tin, hoặc null cho một cơ sở dữ liệu trong bộ nhớ

Cũng , nếu bạn xem mã nguồn của lớp SQLiteHelper, bạn sẽ thấy nó sử dụng giá trị mName để quyết định có sử dụng mContext hay không. Xem mã nguồn trực tuyến tại đây:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r1.2/android/database/sqlite/SQLiteOpenHelper.java#SQLiteOpenHelper.0mContext

+1

Cảm ơn bạn! Điều này có ý nghĩa hơn bây giờ. Tôi chưa bao giờ nghe nói về grepcode và tôi nghĩ rằng trang web đó và tôi sẽ trở nên quen thuộc! – chessofnerd

+0

câu hỏi tân binh: không phải là tên cơ sở dữ liệu đã được sử dụng cho tham số thứ hai? Điều gì sẽ xảy ra trong ngữ cảnh? – AlleyOOP

+0

Ngữ cảnh có thể là hoạt động hoặc bản thân ứng dụng. –

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