Estoy trabajando en el control parental/aplicación de filtrado de contenido para adultos. Esta aplicación monitorea continuamente las llamadas y sms en el móvil de un niño y registra toda la actividad en un servidor. Para esto estoy comenzando un servicio (MyService.java) en BOOT_COMPLETED y en el método onCreate del servicio, registro un contentobserver para callLog y sms uri (consulte el fragmento de código a continuación).Registrar un ContentObserver en un servicio de Android
Ahora el problema es que, dado que quiero monitorear todas las llamadas entrantes y salientes s y sms, quiero que el servicio se ejecute continuamente (sin detenerse ni cancelarse). Además, este servicio se está utilizando para registrar observadores de contenido y no realizar ningún otro procesamiento (su método OnstartCommand es ficticio), por lo que el sistema operativo Android mata el servicio después de algún tiempo. ¿Cómo me aseguro de que el servicio se ejecute continuamente y mantenga vivo el objeto contentobserver?
public class MyService extends Service { private CallLogObserver clLogObs = null; public void onCreate() { super.onCreate(); try{ clLogObs = new CallLogObserver(this); this.getContentResolver().registerContentObserver(android.provider.CallLog.Calls.CONTENT_URI, true, clLogObs); }catch(Exception ex) { Log.e("CallLogData", ex.toString()); } } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onDestroy() { if(clLogObs !=null ) { this.getContentResolver().unregisterContentObserver(clLogObs); } super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); return Service.START_STICKY; } @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); }
La gente ya ha comentado que no se puede mantener un servicio en ejecución pero, dado que parece que el servicio solo registra ContentObservers, parece que la verdadera pregunta es si esos observadores permanecen registrados cuando el servicio muere (creo que do) y cómo evitar volver a registrar nuevas instancias de observador si el servicio se reinicia. – spaaarky21