Я работаю над приложением для фильтрации родительского контроля/для взрослых. Это приложение постоянно отслеживает звонки и sms на дочернем мобильном устройстве и регистрирует всю активность на сервере. Для этого я запускаю сервис (MyService.java) на BOOT_COMPLETED и в методе onCreate службы я зарегистрирую контент-сервер для callLog и sms uri (см. ниже фрагмент кода).
Теперь проблема заключается в том, что я хочу отслеживать каждый исходящий, входящий вызов s и смс. Я хочу, чтобы служба постоянно работала (без остановки/убийства). Кроме того, эта Служба используется только для регистрации наблюдателей контента и не выполняет никакой другой обработки (ее метод OnstartCommand является фиктивным), поэтому Android-сервер убивает службу после некоторого времени. Как обеспечить непрерывность работы службы и сохранение содержимого объекта 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);
}