我正在开发一个家长控制/成人内容过滤应用程序。该应用程序持续监视儿童手机上的通话和短信,并将所有活动记录到服务器上。为此,我在BOOT_COMPLETED时启动了一个服务(MyService.java),并在服务的onCreate方法中注册了callLog和sms uri的contentobserver(请参考下面的代码片段)。
现在的问题是,由于我想监视每个外拨、接听电话和短信,我希望服务能够持续运行(而不会被停止/杀死)。此外,此服务仅用于注册内容观察器,并不进行任何其他处理(其OnstartCommand方法为虚拟的),因此安卓操作系统会在一段时间后杀死该服务。 我该如何确保服务持续运行并保持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); }