我试图四处寻找,但似乎我是唯一一个遇到这种错误的人,所以也许有人能够指出我做错了什么。
我通过此功能创建AlarmManager
:
public void startTimer() {
Intent myIntent = new Intent(MainActivity.this, MyAlarmService.class);
pendingIntent = PendingIntent.getService(MainActivity.this, 0,
myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES / 50, pendingIntent);
Toast.makeText(MainActivity.this, "Start Alarm", Toast.LENGTH_LONG)
.show();
}
按预期创建:调用OnCreate()
,然后调用OnStart()
。
然后我通过调用函数来停止计时器:
private void stopTimer() {
Intent myIntent = new Intent(MainActivity.this, MyAlarmService.class);
pendingIntent = PendingIntent.getService(MainActivity.this, 0,
myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
这次电话会议确实停止了。
问题发生之后,当应用程序关闭后很长时间调用AlarmManager的OnCreate()
和OnStart()
方法时,这些调用中没有容易看到的系统。虽然看起来这种情况发生在我的手机缺少空闲记忆时。
有什么想法吗?提前谢谢!
答案 0 :(得分:0)
您的服务需要在完成后致电stopSelf()
,或者您需要切换为使用IntentService
,stopSelf()
会在完成后自动调用{{1}}。现在,你正在泄露这项服务,Android正在摧毁并在一段时间后重新创建它。