-1

我使用此示例代码删除当前通知工作正常,但我想知道此代码中的此计时器在做什么?我想每 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("");
        }
    }
}
4

3 回答 3

0

第一个值是延迟,第二个是周期。看到这个

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

// in 30 minutes, followed by every 30 minutes
myTimer.schedule(myTask, 30 * 60 * 1000 , 30 * 60 * 1000); 
于 2013-06-27T11:45:50.777 回答
0

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

所以,如果你想每 30 分钟运行一次你的任务,你应该输入这个。

myTimer.schedule(myTask,30*60*1000,30*60*1000);
于 2013-06-27T11:46:35.710 回答
0

看看这个。它更好地解释了该功能。总结一下:

public void schedule (TimerTask task, long delay, long period)

在 API 级别 1 中添加 计划任务以在特定延迟后重复固定延迟执行。

参数 task 要调度的任务。 首次执行前的延迟时间(以毫秒为单位)。 period 后续执行之间的时间量(以毫秒为单位)。 如果 delay < 0 或 period <= 0 ,则引发 IllegalArgumentException 。如果Timer 已被取消,或者任务已被安排或取消,则引发IllegalStateException 。

于 2013-06-27T11:47:54.757 回答