每5分钟检查一次,并将其与按钮的时间进行比较 - Android

时间:2013-10-06 19:54:53

标签: java android button

我有一个名为EventButton的类,它扩展了Button。

所有按钮的设置都在此类中,onClick()等。

我还有一个Home活动,它有一个scrollview

当用户按下菜单按钮时,EventButtons将添加到Home活动的滚动视图中。我没有实例化一个对象,我只是调用new EventButton()

当用户点击按钮时,会显示一个对话框,并且用户设置“事件”的名称和“事件”的时间。

然后,名称和时间显示在家庭活动的scollview内的该按钮上。

我的问题是,您如何每隔5分钟刷新一次EventButton,以检查它上面的时间是否已经过去。我已经尝试过TimerTask和Timer以及Handler,但似乎都没有用。 TimerTask一直在崩溃,我也发现在android中使用Handler会更好。

    private void scheduleDelay() {

    EventButton.this.postDelayed(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            int mHour = calendar.get(Calendar.HOUR_OF_DAY);
            int mMinute = calendar.get(Calendar.MINUTE);

            if(EventButton.hour < mHour || EventButton.minute < mMinute) {
                EventButton.this.setBackgroundColor(Color.RED);
            }
            EventButton.this.postDelayed(this, 5);
        }
    }, 5);
}

当用户在AlertDialog中设置EventButton的名称和时间时,会调用上面的内容。

更新

毕竟问题似乎与处理程序无关。这似乎是当我试图让时间和分钟崩溃时。

1 个答案:

答案 0 :(得分:0)

将您的使用时间更改为5分钟(5 * 60 * 1000)而不是5毫秒:

private void scheduleDelay() {

    EventButton.this.postDelayed(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            int mHour = calendar.get(Calendar.HOUR_OF_DAY);
            int mMinute = calendar.get(Calendar.MINUTE);

            if(EventButton.hour < mHour || EventButton.minute < mMinute) {
                EventButton.this.setBackgroundColor(Color.RED);
            } else {
                // wait another 5 minutes
                scheduleDelay();
            }

        }
    }, 300000);
}