-7

在我的应用程序中,我想设置一个从现在到 5 月 17 日的倒数计时器。当计时器变为 0 时,将应用一个条件。一个人可以使用日历或日期吗

4

2 回答 2

0

您可以同时使用日历和日期:

Date d = new Date(2012, 02, 26); //Assign your desired date
Timer mytimer = new Timer();
mytimer.schedule(new TimerTask() {
    public void run() {
    //method to execute
     mymethod();
    }
}, d); 


    public void mymethod() {
        this.runOnUiThread(Timer_Tick);

    }

    private Runnable Timer_Tick = new Runnable() {
        public void run() {
            if(Your condition) {
                //Execute your code
             }
       }
    };
于 2013-02-26T10:24:50.553 回答
0

我不确定我是否正确理解了您的问题。如果你想在 5 月 17 日调用一些代码,你可以使用AlarmManager

因此,首先您必须创建 Activity 或 Service(假设后者 - 例如 MyService),然后使用如下代码:

Intent intent = new Intent(this, MyService.class);
PendingIntent pi = PendingIntent.getService(
    getApplicationContext(),
    1,
    intent,
    PendingIntent.FLAG_CANCEL_CURRENT);

AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, dateMay17th, pi);

此外,您应该避免 user1566160 发布的解决方案,因为它假定您的应用程序将从现在到 5 月 17 日不间断地运行,并且永远不应该假设。

编辑:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Calendar may17th = Calendar.getInstance();
    may17th.set(Calendar.MONTH, 4);
    may17th.set(Calendar.DAY_OF_MONTH, 17);
    may17th.set(Calendar.HOUR_OF_DAY, 0);
    may17th.set(Calendar.MINUTE, 17);

    if ( Calendar.getInstance().after(may17th) ) {
       setContentView(R.layout.new_layout);
    } else {
       setContentView(R.layout.old_layout);
    }
}
于 2013-02-26T10:30:50.693 回答