-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を使用できます。

したがって、最初にアクティビティまたはサービスを作成する必要があります (後者を想定しましょう - 例: 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 に答える