Android通知无法与AlarmManager一起正常工作

Android通知无法与AlarmManager一起正常工作,android,notifications,alarmmanager,android-notifications,android-alarms,Android,Notifications,Alarmmanager,Android Notifications,Android Alarms,我想每天在指定的时间在我的应用程序中显示通知,通知工作正常。当我第一次启动我的应用程序时,无论是什么时候,我都会收到一个通知,当我单击该通知时,我会转到DetailActivity,当我单击back按钮转到MainActivity时,会创建另一个通知。我想尽了一切办法,但都没用 另外,这是我第一次使用通知和AlarmManager 这是我来自MainActivity.java的代码 protected void onCreate(Bundle savedInstanceState) {

我想每天在指定的时间在我的应用程序中显示通知,通知工作正常。当我第一次启动我的应用程序时,无论是什么时候,我都会收到一个通知,当我单击该通知时,我会转到DetailActivity,当我单击back按钮转到MainActivity时,会创建另一个通知。我想尽了一切办法,但都没用

另外,这是我第一次使用通知和AlarmManager

这是我来自MainActivity.java的代码

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    rvWord = findViewById(R.id.recyclerview);
    rvWord.setLayoutManager(new LinearLayoutManager(getApplicationContext()));

    mDBHelper = new DatabaseHelper(this);

    dictionaryAdapter = new DictionaryAdapter();
    dictionaryAdapter.setCursor(mDBHelper.getDictionaryWord(""));
    rvWord.setAdapter(dictionaryAdapter);

    // Show banner ads
    mAdView = findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);

    showTimedNotification(this); // Shows Notification

    showRatingDialog(); // Shows Rating Dialog

    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();
    navigationView.setNavigationItemSelectedListener(this);

}
private void showTimedNotification(Context context) {

    Calendar updateTime = Calendar.getInstance();
    updateTime.set(Calendar.HOUR_OF_DAY, 8);
    updateTime.set(Calendar.MINUTE, 5);
    updateTime.set(Calendar.SECOND,10);

    Intent intent = new Intent(context, AlarmReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
            0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pendingIntent);

}

我已经有一段时间没有使用AlarmManager了,但这可能是因为您正在将
triggerAtMillis
参数设置为当前日期,时间为08:05:10,在过去的情况下,它会触发警报吗

每次输入MainActivity
onCreate
时,报警都会在同一时间重新安排,从而重新触发报警

您可以尝试添加:
updateTime.add(Calendar.DAY/年,1)
当安排闹钟在明早8点启动时


如果您想彻底了解,您可以检查当前时间是否在上午8点之前(在00:00和08:00之间),如果是在上午8点之后,则只添加额外的一天,但请尝试一下,看看它是如何运行的。

我想每天上午8点显示通知,请告诉我应该如何操作好吗,但问题是它发射得有点早。我将编辑我的答案以反映这一点:)@John更新了答案,并建议在触发时间增加1天。我将尝试您的解决方案,并让您知道它工作正常,但不是08:05,而是在09:08触发警报