1

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

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);
    }

在这个电话之后它确实停止了。

问题发生在之后,当应用程序关闭后很长时间调用 AlarmManagerOnCreate()OnStart()方法时,在这些调用中没有容易看到的系统。虽然这似乎是在我的手机缺少可用内存时发生的。

有任何想法吗?提前致谢!

4

1 回答 1

0

您的服务需要在stopSelf()完成后调用,或者您需要切换到使用IntentService,它会在完成后自动调用stopSelf()。现在,您正在泄漏服务,Android 正在销毁并在一段时间后重新创建它。

于 2012-12-15T13:48:17.213 回答