1

我的应用程序有 2 个不同的活动,让我们将它们命名为 A 和 B。我在活动 A 中设置了一个警报,并设置了 5 分钟后触发警报的时间。我转到活动 B 并在那里做一些不到一分钟的事情。我回到活动 A,这里发生的事情是警报再次注册,而不是之前的 5 分钟时间,从现在开始需要 5 分钟......为了清楚起见,A 行为 - 注册警报 - 5 分钟触发哔声...移至活动 B,动作 B - 做一些事情 - x 分钟...移回动作 A - 再次注册警报 - x+5 分钟以触发哔声...。

我不希望发生上述情况。我只想在 5 分钟而不是 x+5 时触发警报?请问有什么帮助吗?这真的让我很烦......从星期四开始......

在行动 A

 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            Intent checkIntent = new Intent(getApplicationContext(),Alarm_class.class);
            checkIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            PendingIntent pi = PendingIntent.getBroadcast(this, 0, checkIntent, 0);

            if(PendingIntent.getBroadcast(getBaseContext(), 0, checkIntent, PendingIntent.FLAG_NO_CREATE) != null)
            {
                Log.d("kunal", "Alarm is running");             
                if(log_days_came.equals("Three"))
                {
                     Log.d("kunal","3 days selected to zip log file.");
                    // am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 180000, pi);
                     am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 2*60000, pi);
                     Log.d("kunal","after the pending intent 3.");
                 }
    }
            else
            {
                if(log_days_came == null)
                {
                    Toast.makeText(getApplicationContext(), "configure the days to zip log files", Toast.LENGTH_LONG).show();
                    Log.d("kunal", "Alarm is not running");
                }

            }

            if(log_days_came.equals("Three"))
            {
                 Calendar calendar2 = Calendar.getInstance();
                 calendar2.setTimeInMillis(System.currentTimeMillis());
                 calendar2.add(Calendar.MINUTE, 3);   
            }

我去行动 B...做一些事情...回来行动 A...它再次调用警报的 OnReceive,而触发器没有过期...我做错了什么?

4

0 回答 0