从第一个异步任务加载器启动第二个异步任务加载程序



因此,在一个名为ActivityClass:的类中似乎有以下模式

private static class AsyncTaskLoader1 extends AsyncTaskLoader<E> {
    ........
}
private static class AsyncTaskLoader2 extends AsyncTaskLoader<F> {
    .........
}
private class LoaderManager1 extends LoaderManager.LoaderCallbacks<E> {
     private void onLoadFinished(AsyncTaskLoader1 loader, E data) {
           //do stuff with data
           //ok, now we need to start a asynchronous data load based on info we got back from 1st
           ActivityClass.this.getLoaderManager().init(0, null, new LoaderManager2()).forceLoad();
     }
}
private class LoaderManager2 extends LoaderManager.LoaderCallbacks<D> {
    //...
}

这导致以下运行时异常,看起来像:

java.lang.ClassCastException: E cannot be cast to F
            at com.mycompany.myapp.ActivityClass$LoaderManager2.onLoadFinished

我想这是因为我正在调用第一个加载器中的第二个加载器。如果这不可能,我假设有一种方法可以让"活动"知道数据已经加载,这样它就可以从UI线程启动一个新的AsyncTaskLoader,但我不知道如何做到这一点。有人能启发我吗?谢谢

因此,最终的问题是,对于原始调用和第一个LoadManageronLoadFinished方法中的调用,我都向initLoader传递了相同的整数ID参数。我认为这是导致第一个加载程序返回到错误的管理器的结果。

最新更新