是onLoadFinished()asynchronous(后台线程)?

我目前正在使用一个加载器pipe理器来填充drawablelayout中的expandablelistview。 如果callback函数onLoadFinished()正在UI线程或后台线程上运行,我无法在文档中find任何地方。 它是在后台线程?

  • Loader将结果传递给错误的片段
  • getSupportLoaderManager()在不同的片段中使用相同的ID?
  • 为SQLiteDatabase使用Singletondevise模式
  • startManagingCursor的目的是什么?
  • LoaderManager.restartLoader()总是会调用onCreateLoader()吗?
  • 从LoaderManager获取“在启动时调用doStart”。 为什么?
  • 全局加载器(LoaderManager),用于在多个活动/片段中重用
  • 自定义CursorLoader和支持ListView的CursorAdapter之间的数据不同步
  • 如果你从UI线程调用init()onLoaderFinished()肯定会在UI线程上调用。 在从后台调用例如AsyncTaskLoader的情况下,将通知结果的线程将是您从init loader加载的线程。

    …但你仍然可以做到以下几点:

     @Override public void onLoadFinished(Loader<String> arg0, String arg1) { Runnable populate = new Runnable(){ @Override public void run() { //your code } }; if (Looper.getMainLooper().getThread() == Thread.currentThread()) { //on Ui thread populate.run(); }else{ this.runOnUiThread(populate); //or use handler to run the runnable } } 

    🙂

    http://www.amazon.com/Android-Programming-Ranch-Guide-Guides/dp/0321804333 ,第 566。

    一旦数据在后台加载,onFinishedLoad()方法将在主线程上调用。“

    在下面添加代码将解决在onLoadFinished()中调用getView()的概率返回NullPointerException

     @Override public void onStop() { super.onStop(); getSupportLoaderManager().destroyLoader(LOADER_ID); }