我的任务是定期读取后端的手机传感器(例如 WiFi、加速度计)。
我目前的解决方案是使用 AlarmManager。
具体来说,我们有:
在“主”程序(一个活动)中,我们使用 PendingIntent.getService:
公共类主要扩展活动{ ... Intent intent = new Intent(this, AutoLogging.class); mAlarmSender = PendingIntent.getService(this, 0, intent, 0); 上午 = (AlarmManager)getSystemService(ALARM_SERVICE); am.setRepeating(AlarmManager.RTC, 0, 5*1000, mAlarmSender); }
在“AutoLogging”程序(一项服务)中,我们会定期响应警报:
公共类 AutoLogging 扩展服务 { ... @覆盖 公共无效 onCreate() { Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show(); } @覆盖 公共无效 onDestroy() { super.onDestroy(); Toast.makeText(this, "onDestroy", Toast.LENGTH_SHORT).show(); } @覆盖 公共布尔onUnbind(意图意图){ Toast.makeText(this, "onUnbind", Toast.LENGTH_SHORT).show() 返回 super.onUnbind(intent); } @覆盖 公共无效onStart(意图意图,int startId){ super.onStart(intent, startId); Toast.makeText(this, "onStart", Toast.LENGTH_SHORT).show(); // 在此处读取传感器数据 } @覆盖 公共IBinder onBind(意图意图){ Toast.makeText(this, "onBind", Toast.LENGTH_SHORT).show(); 返回空值; } }
我的问题是:
当我使用这个报警服务时,每次报警只调用 OnCreate 和 OnStart。
我的问题是:
(1)我们需要调用OnDestroy(或者onBind,onUnbind)吗?
(2)这是使用AlarmManager的正确方法(与“大写接收器”相比)吗?
谢谢!文森特