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

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

Solutions Collecting From Web of "是onLoadFinished()asynchronous(后台线程)?"

如果你从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); }