警报管理器OnCreate()随机调用

时间:2012-12-15 13:42:59

标签: android timer alarmmanager oncreate

我试图四处寻找,但似乎我是唯一一个遇到这种错误的人,所以也许有人能够指出我做错了什么。

我通过此功能创建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()方法时,这些调用中没有容易看到的系统。虽然看起来这种情况发生在我的手机缺少空闲记忆时。

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您的服务需要在完成后致电stopSelf(),或者您需要切换为使用IntentServicestopSelf()会在完成后自动调用{{1}}。现在,你正在泄露这项服务,Android正在摧毁并在一段时间后重新创建它。