Android 呼叫后未通知ContentObserver

Android 呼叫后未通知ContentObserver,android,contentobserver,Android,Contentobserver,关闭:由于某些原因,它突然起作用。我检查了git,我什么都没改。我只希望它保持这种状态 我有一个ContentObserver,它是在我的第一个活动的onCreate方法中注册的。我知道它被调用是因为日志上这么说。onCreate方法中的相关代码如下所示: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.v(TAG, "on

关闭:由于某些原因,它突然起作用。我检查了git,我什么都没改。我只希望它保持这种状态

我有一个ContentObserver,它是在我的第一个活动的onCreate方法中注册的。我知道它被调用是因为日志上这么说。onCreate方法中的相关代码如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.v(TAG, "on create");
    setContentView(R.layout.activity_set_list);
    SyncAdapter.SYNC_OBSERVER = new ContentObserver(new Handler(getMainLooper())) {
        @Override
        public boolean deliverSelfNotifications() {
            return false;
        }
        @Override
        public void onChange(boolean selfChange) {
            Log.i(TAG, "On change for sync called.");
            ContentResolver.requestSync(accountInstance, authority, Bundle.EMPTY);
        }
    };
    final ContentResolver resolver = getContentResolver();
    Uri uri = Uri.withAppendedPath(CONTENT_URI, VOTES_TABLE);
    resolver.registerContentObserver(uri, true, SyncAdapter.SYNC_OBSERVER);
    uri = Uri.withAppendedPath(CONTENT_URI, SETS_TABLE);
    resolver.registerContentObserver(uri, true, SyncAdapter.SYNC_OBSERVER);
}
Uri uri = Uri.withAppendedPath(CONTENT_URI, SETS_TABLE);
Uri parentUri = getContentResolver().insert(uri, values);
另一方面,我有
ContentProvider
,具有标准的插入、更新、删除和查询方法。例如,这是insert方法的实现:

@Override
public Uri insert(Uri uri, ContentValues values) {
    Log.v(TAG, "insert");
    getContext().getContentResolver().notifyChange(uri, null);
    String table = localize(uri.getLastPathSegment());
    SQLiteDatabase db = dbConnection.getWritableDatabase();
    long rowId = db.insert(table, null, values);
    return Uri.withAppendedPath(Constants.CONTENT_URI, String.valueOf(rowId));
}
在另一点上,我调用insert方法,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.v(TAG, "on create");
    setContentView(R.layout.activity_set_list);
    SyncAdapter.SYNC_OBSERVER = new ContentObserver(new Handler(getMainLooper())) {
        @Override
        public boolean deliverSelfNotifications() {
            return false;
        }
        @Override
        public void onChange(boolean selfChange) {
            Log.i(TAG, "On change for sync called.");
            ContentResolver.requestSync(accountInstance, authority, Bundle.EMPTY);
        }
    };
    final ContentResolver resolver = getContentResolver();
    Uri uri = Uri.withAppendedPath(CONTENT_URI, VOTES_TABLE);
    resolver.registerContentObserver(uri, true, SyncAdapter.SYNC_OBSERVER);
    uri = Uri.withAppendedPath(CONTENT_URI, SETS_TABLE);
    resolver.registerContentObserver(uri, true, SyncAdapter.SYNC_OBSERVER);
}
Uri uri = Uri.withAppendedPath(CONTENT_URI, SETS_TABLE);
Uri parentUri = getContentResolver().insert(uri, values);
insert方法正在工作,打印日志“insert”,并将数据插入数据库。但是,不会打印ContentObserver的onChange方法中的日志,也不会启动同步。我知道同步不能立即启动,但是我希望日志能够像其他日志一样打印到控制台

有人知道为什么不调用ContentObserver吗


你需要进一步的信息吗?我可以在这里发布整个类,但是这是很多代码。

覆盖
onChange(布尔自更改,Uri)
并查看在超类中覆盖了什么happensit,并调用onChange(布尔自更改),我错过了。。。您确定调用
insert
时使用的
CONTENT\u URI
registerContentObserver
使用的
CONTENT\u URI
相同吗?是。今天,当我再次运行测试时,它突然起了作用。我检查了我的git历史记录,我什么也没改。我再次检查了昨天的日志,但没有显示日志。但今天突然出现了日志。我不知道为什么它是固定的。谢谢你的帮助