나는 sms content provider
의 내용을 모니터링 할 contentObserver
을 사용하고 이상 호출되고, 나는 디버깅을위한 Log.d()
태그를 넣어 가지고와 logcat
의 태그는 한 번 의미보다 더 볼되고있다 onchange()
ID가 두 번 이상 호출되는 경우이 문제가 발생하지 않도록하려면 어떻게해야합니까? 백그라운드에서 실행되는 서비스에서 관찰자를 구현했습니다. 다음은 코드onchange를 기능을 한 번
package com.messageHider;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class smsSentService extends Service {
ContentResolver contentResolver;
Uri uri=Uri.parse("content://sms/");
Handler handler;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
contentResolver=getContentResolver();
contentResolver.registerContentObserver(uri, true, new contentObserver(handler));
Log.d("SENTSERVICE", "Service created");
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Log.d("SENTSERVICE", "Service started");
super.onStart(intent, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
}
public class contentObserver extends ContentObserver
{
public contentObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
Cursor cursor=contentResolver.query(uri, null, null, null, null);
cursor.moveToFirst();
String type=cursor.getString(cursor.getColumnIndex("type"));
Log.d("THEMESSAGE", type);
super.onChange(selfChange);
}
}
}
deliverSelfNotifications()를 재정의하면 onChange()도 두 번 호출됩니다. –