1
次のコンテンツオブザーバでSMSメッセージを監視しようとしています。残念ながら、それはいくつかの発生だけをピックアップします。私はそれがライフサイクルの問題だと思ったので、私は自分の活動が最前線にある間、常に観察者を観察していることを確認する方法を停止、開始、再開などに配置しました。誰もがなぜ最初の新しいメッセージをピックアップするのかについてのアイデアはありますか?最初のものをキャッチした後、私はアプリケーションを再インストールするまでピックアップしません。コンテンツオブザーバは一度だけ起動し、その後は一度も起動しません。
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();
}