Android 在这段代码中,双定时器的作用是什么?

Android 在这段代码中,双定时器的作用是什么?,android,Android,我使用这个示例代码来删除当前通知工作正常,但我想知道这个计时器在这个代码中做什么?我想每19秒删除一次通知,所以在我的代码中有两个计时器,如果我想每30分钟删除一次通知,我会更改哪个计时器??这个tewo定时器的功能是什么myTimer.schedule(myTask,19*1000,19*1000)如果我每30分钟发出一次删除通知,我会更改哪一个 public class TimeAlarm extends BroadcastReceiver { NotificationManage

我使用这个示例代码来删除当前通知工作正常,但我想知道这个计时器在这个代码中做什么?我想每19秒删除一次通知,所以在我的代码中有两个计时器,如果我想每30分钟删除一次通知,我会更改哪个计时器??这个tewo定时器的功能是什么<代码>myTimer.schedule(myTask,19*1000,19*1000)如果我每30分钟发出一次删除通知,我会更改哪一个

public class TimeAlarm extends BroadcastReceiver {

    NotificationManager nm;

    @Override
    public void onReceive(Context context, Intent intent) {
        nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        CharSequence from = "CherryApplication";
        CharSequence message = "Launcher application for games.";

        MyTimerTask myTask = new MyTimerTask();
        Timer myTimer = new Timer();

        Intent startMyActivity = new Intent(context, MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
                startMyActivity, 0);
        Notification notif = new Notification(R.drawable.cherry_icon,
                "CherryApplication", System.currentTimeMillis());
        notif.setLatestEventInfo(context, from, message, contentIntent);
        nm.notify(1, notif);
        myTimer.schedule(myTask, 19 * 1000, 19 * 1000);
    }

    class MyTimerTask extends TimerTask {

        public void run() {
            nm.cancel(1);

            System.out.println("");
        }
    }
}

第一个值是延迟,第二个值是周期。见:

要回答您的问题,您需要更改这两个值

// in 30 minutes, followed by every 30 minutes
myTimer.schedule(myTask, 30 * 60 * 1000 , 30 * 60 * 1000); 

如果您检查
Timer.schedule
API,您将看到第二个参数表示从现在开始第一次“任务运行”的时间(毫秒),第三个参数表示任务再次运行的频率

因此,如果您想每30分钟运行一次任务,您应该键入以下内容

myTimer.schedule(myTask,30*60*1000,30*60*1000);
看一看。它更好地解释了功能。总结如下:

public void schedule (TimerTask task, long delay, long period)
在API级别1中添加 在特定延迟后,为重复的固定延迟执行计划任务

参数 任务-要计划的任务。 首次执行前的延迟时间量(毫秒)。 周期后续执行之间的时间量(毫秒)。 投掷
IllegalArgumentException如果延迟<0或周期,但一次为延迟???我希望每30分钟执行一次此操作,时间仅为2秒,因为我每30分钟从其他类发送一次通知,所以此类将每30分钟删除一次通知,就像一个弹出的新通知,由其他类发送我的其他类计时器是此am.SETREPECTING(AlarmManager.RTC_唤醒,System.currentTimeMillis(),(900*1000),挂起内容);我希望每14分钟55秒删除一次此消息,这样新的通知将始终存在于手机中,并每15分钟显示一次弹出窗口。您不需要删除通知,即可在通知栏中弹出另一个通知。如果您再次启动通知(使用与旧通知相同的id)您将更新通知,并显示新通知的效果。不,我只需每隔15分钟发送一次通知应用程序正在运行或未运行MyTimer。计划(myTask,2*1000,30*60*1000);表示您将在2秒钟内清理第一个通知,然后在这2秒钟后每隔30分钟清理下一个通知显示表示此效果的工作时间??因此,如果我将此功能用作每隔15分钟的删除通知,这是工作吗?myTimer.schedule(myTask,2*1000,30*60*1000);因此,每30分钟删除一次通知,持续时间为2秒???持续时间是什么?我不明白你的意思,我是说,我每15分钟使用以下代码发送一次通知:am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),(900*1000),PendingEvent);现在我想每14分55秒删除一次通知,这样当新通知在15分钟出现时,弹出窗口就会出现。如果我使用延迟0,会发生什么?就像这个myTimer.schedule(myTask,0873*1000);这是开始延迟。如果你想让任务立即开始,我想你可以放0毫秒,然后在这段时间里,你可以放30*60*1000,也就是30秒。