我每5分钟检查一次位置数据。我在一个每五分钟调用一次的服务中实现了这一点。在主活动中,我有两个按钮来启动/停止警报。这是实现锁的最佳位置吗..
startService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// add a notification when the BG service is started..
Intent myIntent = new Intent(ContextActivity.this, MyAlarmService.class);
pendingIntent = PendingIntent.getService(ContextActivity.this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
// alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 5, pendingIntent);
Toast.makeText(ContextActivity.this, "Start Alarm", Toast.LENGTH_LONG).show();
System.out.println("Alarm started");
}
});
stopService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
// Tell the user about what we did.
Toast.makeText(ContextActivity.this, "Cancel!", Toast.LENGTH_LONG).show();
System.out.println("Stop alarm");
}
});在启动时获取锁,在停止时释放锁可以吗?
发布于 2012-08-19 12:34:20
你不应该需要一个wakelock来做这个。
您已经使用了alarmManager.setRepeating(AlarmManager.RTC_WAKEUP...作为文档状态:
Alarm time in System.currentTimeMillis() (挂钟时间,单位为协调世界时),它将在设备关闭时唤醒设备。
因此,当闹钟发出时,它已经为您唤醒了设备。如果您觉得您的服务在设备重新进入睡眠之前无法完成其工作,那么您应该获取服务内部的唤醒锁,并在完成工作后释放它。
https://stackoverflow.com/questions/12024042
复制相似问题