Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 随机调用报警管理器OnCreate()_Android_Timer_Alarmmanager_Oncreate - Fatal编程技术网

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

Android 随机调用报警管理器OnCreate(),android,timer,alarmmanager,oncreate,Android,Timer,Alarmmanager,Oncreate,我试着四处搜索,但似乎只有我一个人经历过这样的错误,所以也许有人能指出我做错了什么 我通过以下功能创建AlarmManager: public void startTimer() { Intent myIntent = new Intent(MainActivity.this, MyAlarmService.class); pendingIntent = PendingIntent.getService(MainActivity.this, 0,

我试着四处搜索,但似乎只有我一个人经历过这样的错误,所以也许有人能指出我做错了什么

我通过以下功能创建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();
    }
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);
    }
它按预期创建:调用OnCreate,然后调用OnStart。 然后通过调用函数停止计时器:

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();
    }
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方法在应用程序关闭后很久才被调用,而这些调用中没有容易看到的系统时,问题就出现了。虽然这似乎发生在我的手机缺少可用内存的时候


有什么想法吗?提前谢谢

您的服务完成后需要调用stopSelf,或者您需要切换到使用IntentService,该服务完成后将自动调用stopSelf。现在,你正在泄漏服务,安卓系统正在破坏并重新创建它。

哦,谢谢,不知怎么的,我错过了。这似乎解决了我的问题。