Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 活动启动时停止重复报警_Android - Fatal编程技术网

Android 活动启动时停止重复报警

Android 活动启动时停止重复报警,android,Android,我有这样的代码: public class MyAlarm extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); PendingIntent pendingIn

我有这样的代码:

public class MyAlarm extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
    alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, pendingIntent);

    DBHelper dbHelper = new DBHelper(context);
    dbHelper.getWritableDatabase();

    if (dbHelper.getProfile().getHp() < dbHelper.getProfile().getHpMax()) {
        dbHelper.setHp("1", dbHelper.getProfile().getHp() + 10);
        Toast.makeText(context, "Your character gained 10HP and now has " + dbHelper.getProfile().getHp() + "HP", Toast.LENGTH_LONG).show();
    }
    else {
        Toast.makeText(context, "Your character is fully recovered", Toast.LENGTH_LONG).show();
        alarmManager.cancel(pendingIntent);
    }
}
}
我希望警报在用户启动活动时取消,并在活动暂停时启动此警报。问题是,当我启动活动时,此警报仍在运行。如何在onStart()中停止它

    @Override
protected void onStart() {
    super.onStart();
    Intent intent = new Intent(this, MyAlarm.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1253, intent, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.cancel(pendingIntent);
}

    @Override
    protected void onPause() {
    super.onPause();
    setAlarm(System.currentTimeMillis() + 10000);
}

    private void setAlarm(long timeInMilis) {
    Toast.makeText(getApplicationContext(), "Regeneration activated", Toast.LENGTH_LONG).show();
    alarmManager = (AlarmManager) getSystemService((Context.ALARM_SERVICE));
    Intent intent = new Intent(this, MyAlarm.class);
    pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    alarmManager.set(AlarmManager.RTC_WAKEUP, timeInMilis, pendingIntent);
}