我有两个活动读取相同的数据库表。在活动A
中,我有一个AsyncTaskLoader
和LoaderCallbacks
个对象,其中包含以下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
。我怎样才能做到这一点?