试图更新我的旧应用程序,其中不推荐使用某些方法.我发现如果我想使用显示来自db的数据的ListView,我应该使用LoaderManager + CursorLoader.CursorLoader与内容提供程序一起使用.那么对于我的db中的每个表,我现在应该创建内容提供者?我为什么要 ?据我所知,内容提供商用于与其他应用程序共享一些数据库信息,但我的应用程序不共享任何信息.那么我可以在没有内容提供者的情况下使用CursorLoader吗?
我试图在最小API为10的情况下实现CursorLoader和LoaderManager.
但是,我继续在AsyncTaskLoader.class的第63行获得IllegalArgument异常(AsyncTaskLoader.class的源代码,其中发生异常的是下面和此链接.
/* Runs on the UI thread */
@Override
protected void onPostExecute(D data) {
if (DEBUG) Log.v(TAG, this + " onPostExecute");
try {
AsyncTaskLoader.this.dispatchOnLoadComplete(this, data);
} finally {
done.countDown();
}
}
Run Code Online (Sandbox Code Playgroud)
下面是错误的堆栈:
AsyncTaskLoader$LoadTask.onPostExecute(Object) line: 63
AsyncTaskLoader$LoadTask(ModernAsyncTask).finish(Object) line: 461
ModernAsyncTask.access$500(ModernAsyncTask, Object) line: 47
ModernAsyncTask$InternalHandler.handleMessage(Message) line: 474
ModernAsyncTask$InternalHandler(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 137
ActivityThread.main(String[]) line: 4424
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 511
ZygoteInit$MethodAndArgsCaller.run() line: 784
ZygoteInit.main(String[]) line: 551
NativeStart.main(String[]) …Run Code Online (Sandbox Code Playgroud) sqlite android illegalargumentexception android-loadermanager android-cursorloader