Ответ 1
каково использование для возврата false в OnCreate ContentProvider?
Быстро перемещаясь по Android файлу, я обнаружил, что на данный момент действительно не имеет значения, что вы возвращаете, он просто игнорируется, снова на данный момент.
В тестах и ActivityThread
, attachInfo
вызывается сразу после newInstance
, поэтому, если вы посмотрите на ContentProvider
источник в строке 1058 где onCreate
вызывается и выглядит следующим образом:
/**
* 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();
}
}
Имейте в виду, что если документация говорит, что кто знает, возможно, это будет использоваться/исправлено в будущих выпусках.
как я должен обрабатывать запрос после сбоя onCreate? просто запустите снова onCreate в запросе?
Я бы сказал, да, не обязательно onCreate
, но ваш собственный метод, который инициализирует один раз и гарантирует ваш DatabaseHelper
или так, это было бы вашим лучшим усилием, я имею в виду согласно документации onCreate
Вы должны отложить нетривиальную инициализацию (например, открытие, обновление и проверку баз данных) до тех пор, пока не будет использован поставщик контента
Итак, технически вы бы делали все, что было задумано, но это дико, так что будьте в безопасности.