việc sử dụng để trả về false trong OnCreate of ContentProvider là gì?
Bằng cách nhanh chóng điều hướng thông qua các nguồn Android tôi thấy rằng, như bây giờ, nó thực sự không có vấn đề gì bạn quay lại, nó chỉ được bỏ qua, một lần nữa như bây giờ.
On kiểm tra và ActivityThread
, attachInfo
được gọi ngay sau khi newInstance
vì vậy nếu bạn nhìn vào ContentProvider
nguồn at line 1058 là nơi onCreate
được gọi và trông giống như:
/**
* After being instantiated, this is called to tell the content provider
* about itself.
*
* @param context The context this provider is running in
* @param info Registered information about this content provider
*/
public void attachInfo(Context context, ProviderInfo info) {
/*
* We may be using AsyncTask from binder threads. Make it init here
* so its static handler is on the main thread.
*/
AsyncTask.init();
/*
* Only allow it to be set once, so after the content service gives
* this to us clients can't change it.
*/
if (mContext == null) {
mContext = context;
mMyUid = Process.myUid();
if (info != null) {
setReadPermission(info.readPermission);
setWritePermission(info.writePermission);
setPathPermissions(info.pathPermissions);
mExported = info.exported;
}
ContentProvider.this.onCreate();
}
}
Hãy ghi nhớ rằng nếu tài liệu nói như vậy ai mà biết được, có lẽ điều này sẽ được sử dụng/cố định trong các bản phát hành trong tương lai.
làm thế nào tôi nên xử lý cho truy vấn sau một thất bại onCreate? chỉ cần chạy lại onCreate trong truy vấn?
tôi sẽ nói có, không nhất thiết phải onCreate
nhưng phương pháp rất riêng bạn mà khởi một lần và đảm bảo bạn DatabaseHelper
hoặc lâu hơn, đó sẽ là nỗ lực tốt nhất của bạn, tôi có nghĩa là theo tài liệu của onCreate
Bạn nên trì hoãn việc khởi tạo không khởi động (chẳng hạn như mở, nâng cấp và quét cơ sở dữ liệu) cho đến khi nhà cung cấp nội dung được sử dụng
Vì vậy, về mặt kỹ thuật bạn sẽ làm như dự định, nhưng nó tự nhiên ở đây để được an toàn.
Xin lỗi vì đã chấp nhận muộn, câu trả lời hay! – Bear