Are content observers persistent in Android? If I create a content observer in an activity, will that observer continue to run until I remove the observer.
Basica
If I create a content observer in an activity, will that observer continue to run until I remove the observer.
Only if you like leaking memory, and then only until Android terminates the process. Well-behaved activities will not register content observers without unregistering them at an appropriate time (e.g., onDestroy()
).
how can I create a ContentObserver that will always receive notifications on content:/sms/
The SMS content provider is not part of the SDK. It may or may not work on your phone. It may or may not work in future versions of Android.
The only way to have a ContentObserver
that sticks around for a bit is to have it be in a Service
. However, services do not live forever, either. Beyond that, there is no way to have an observer "always receive notifications".
Sorry!
I have tried many ways to make this work, the only way (non-ideal) that has worked is to have a foreground service which runs even after your activity is destroyed. The foreground service registers the contentobserver. the downside is foreground services require a permanent notification.
I am still looking for a way to have a background service run without it being recycled, and it gets harder and harder. Stuff like "sticky" and broadcast receiver to restart service are no longer working.