ContentProvider の OnCreate で false を返す用途は何ですか?
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
重要な初期化 (データベースのオープン、アップグレード、スキャンなど) は、コンテンツ プロバイダーが使用されるまで延期する必要があります。
技術的には意図したとおりにやっているはずですが、そこはワイルドなので安全に気をつけてください。