Alarmmanager - 如何使其注册一次

时间:2012-07-30 13:17:23

标签: android

我的应用程序有两个不同的活动,让我们将它们命名为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,没有触发器过期......我做错了什么?

0 个答案:

没有答案