Android content observer只调用一次,然后再也不会调用

Android content observer只调用一次,然后再也不会调用,android,Android,我试图观察短信与以下内容观察员。不幸的是,它只收集了一些事件。起初我认为这是一个生命周期问题,所以我将方法放在停止、开始、恢复等方法中,以确保在我的活动处于最前沿时,始终有一个观察者在观察。有人知道为什么它只接收第一条新消息吗?在捕捉到第一个后,直到我重新安装应用程序,它才会恢复 private void registerContentObservers() { ContentResolver cr = getContentResolver(); mSmsObserver =

我试图观察短信与以下内容观察员。不幸的是,它只收集了一些事件。起初我认为这是一个生命周期问题,所以我将方法放在停止、开始、恢复等方法中,以确保在我的活动处于最前沿时,始终有一个观察者在观察。有人知道为什么它只接收第一条新消息吗?在捕捉到第一个后,直到我重新安装应用程序,它才会恢复

private void registerContentObservers() {
    ContentResolver cr = getContentResolver();

    mSmsObserver = new ContentObserver(mHandler) {

        @Override
        public void onChange(boolean selfChange) {
            Log.v(TAG, "onChange method");
        }

        @Override
        public boolean deliverSelfNotifications() {
            return true;
        }
    };
    // cursor.registerContentObserver(mSmsObserver);
    cr.registerContentObserver(Uri.parse("content://sms/inbox"), false, mSmsObserver);

}

private void unregisterContentObservers() {
    ContentResolver cr = getContentResolver();
    if (mSmsObserver != null) {
        // just paranoia
        cr.unregisterContentObserver(mSmsObserver);
        mSmsObserver = null;
    }
}

@Override
protected void onDestroy() {
    Log.v(TAG, "onDestroy()");
    unregisterContentObservers();
    super.onDestroy();
}

@Override
protected void onStart() {
    Log.v(TAG, "onStart()");
    registerContentObservers();
    super.onStart();
}

@Override
protected void onStop() {
    Log.v(TAG, "onStop()");
    unregisterContentObservers();
    super.onStop();
}

@Override
protected void onResume() {
    Log.v(TAG, "onResume()");
    registerContentObservers();
    super.onResume();
}

@Override
protected void onPause() {
    Log.v(TAG, "onPause()");
    super.onPause();
}

我想出来了。我添加了对onChange()的超级调用,在我的registerContentObserver()调用中,我为notifyForDescendents()方法添加了true,最后将Handler参数更改为新的Handler()调用

        mSmsObserver = new ContentObserver(new Handler()) {

        @Override
        public void onChange(boolean selfChange) {
            Log.v(TAG, "onChange method");
            super.onChange(selfChange);
        }

        @Override
        public boolean deliverSelfNotifications() {
            return true;
        }
    };
    cr.registerContentObserver(Uri.parse("content://sms"), true, mSmsObserver);