Java 报警应用程序不基于系统时间

Java 报警应用程序不基于系统时间,java,android,time,alarmmanager,Java,Android,Time,Alarmmanager,我的应用程序是这样工作的, 用户以分钟为单位记录时间,例如40。 然后应用程序将在40分钟后发出警报。无论应用程序是活动的还是在后台运行,它都可以工作 我的问题是,因为我使用的方法是System.currentTimeMillis();然后它使我的应用程序依赖于系统时间。因此,如果我在设置中更改系统时间,则不会在设置的时间调用我的报警应用程序,它会更改 例如:如果时间是上午10:00,并且我将闹钟设置为在20分钟后调用,那么它将被调用为上午10:20。但是,如果我在设置闹钟后转到“设置”并将系统

我的应用程序是这样工作的, 用户以分钟为单位记录时间,例如40。 然后应用程序将在40分钟后发出警报。无论应用程序是活动的还是在后台运行,它都可以工作

我的问题是,因为我使用的方法是System.currentTimeMillis();然后它使我的应用程序依赖于系统时间。因此,如果我在设置中更改系统时间,则不会在设置的时间调用我的报警应用程序,它会更改

例如:如果时间是上午10:00,并且我将闹钟设置为在20分钟后调用,那么它将被调用为上午10:20。但是,如果我在设置闹钟后转到“设置”并将系统时间更改为上午9:00,则我的应用程序将在100分钟后被调用。 如何防止这种情况发生,以便在设置报警时间时,无论系统时间是多少,都会在这些分钟后调用报警

我已经检查过了,但它不一样,因为它对我不起作用,我也不完全理解它

这是我的密码:

 public void newSetAlarm(View view) {


            timeEntered = Integer.parseInt(editTextForTime.getText().toString());
            Intent AlarmIntent = new Intent(this, Alarm.class);
            AlarmIntent.putExtra(TIME_LEFT, timeEntered);
            pendingIntentForAlarm = PendingIntent.getBroadcast(getApplicationContext(), 0, AlarmIntent, 0);
            amAlarm = (AlarmManager) getSystemService(ALARM_SERVICE);
            amAlarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeEntered * 60000, pendingIntentForAlarm);}

可能重复可能重复没有重复,我已经试过了阅读下面的答案