Ich versuche nur, die Android-Dienste und Inhalte Beobachter zu verstehen.android Registrierung für Content-Beobachter von einem Service
Also versuchte ich ein Programm, wo meine Aktivität einen Dienst startet und im Dienst registriere ich zu CONTACTS URI, um benachrichtigt zu werden, wenn sich die Kontakte db ändern.
Ich rum mein Programm und ich kann sehen, dass dieser Dienst unter Anwendungen kommt -> laufende Dienste. Jetzt versuche ich einen Kontakt hinzuzufügen und mein Beobachter wird benachrichtigt. Wenn ich den Kontakt erneut bearbeite, wird er nicht benachrichtigt.
public class ContactChangeOberverServiceActivity extends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("Start","Service");
startService(new Intent(this, MyService.class));
}
}
der Service:
public class MyService extends Service {
private static final String TAG = "MyService";
@Override
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStart");
ContactObserverActivity observer = new ContactObserverActivity(new Handler());
observer.register(getApplicationContext());
return super.onStartCommand(intent, flags, startId);
}
public boolean deliverSelfNotifications() {
return true;
}
}
Es ist nur das erste Mal nach meinem Programm ausgeführt wird, wenn ich Kontakte bearbeiten, der Inhalt Beobachter Bitte sehen meinen Code Details unten
Mainactivity, um den Dienst zu starten benachrichtigt
Und der Beobachter:
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
// super.onChange(selfChange);
Log.e(TAG, "Onchange Called");
//MainActivity.takeContactBackup();
Intent intent = new Intent (ctx,ContactsExtractorActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(intent);
}
/TODO Auto-generated constructor stub
}
public void register(Context ctx) {
Log.e(TAG, "Registering");
this.ctx = ctx;
curval = ctx.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, projection, null, null,
null);
curval.registerContentObserver(new ContactObserverActivity(
new Handler()));
Log.e(TAG, "Registered");
}
Bitte helfen Sie mir, dieses Verhalten und die Lösung dafür zu verstehen. Danke.
Ich habe das gleiche Problem haben Sie dieses Problem behoben? – PrvN