如果活动未激活,则不调用LoaderCallbacks.onLoadFinished

时间:2016-02-24 17:36:32

标签: android android-activity android-cursorloader observers

我有两个活动读取相同的数据库表。在活动A中,我有一个AsyncTaskLoaderLoaderCallbacks个对象,其中包含以下onLoadFinished代码(在Scala中):

def onLoadFinished(loader: CursorLoader, cursor: Cursor) = {

  android.util.Log.d(TAG, "got results")
  cursor.setNotificationUri(ct.getContentResolver, observePath)

  cursor registerContentObserver new ContentObserver(new Handler) {
    override def onChange(selfChange: Boolean) = {
      android.util.Log.d(TAG, "change registered")
      if (null != loader) loader.onContentChanged
    }
    override def deliverSelfNotifications = true
  }
}

现在,如果我转到活动B,请在那里更新数据库并调用它:

getContentResolver.notifyChange(observePath, null)

然后活动A中的onLoadFinished从未被调用,尽管我在控制台中输出"change registered" 但是如果我设置几秒延迟以便我有时间在执行上面的代码之前返回活动A,那么onLoadFinished将被正常调用。

似乎LoaderCallbacks方法以某种方式依赖于活动的主机活动,但我不希望这样,即使活动A在后台,我也希望调用onLoadFinished。我怎样才能做到这一点?

0 个答案:

没有答案