答案 0 :(得分:4)
尝试此代码,我测试了它:
Calendar calendar = Calendar.getInstance();
通过以下方式之一设定时间:
calendar.set(year, month, day, hourOfDay, minute);
// be careful month start form "0" so for "May" put "4"
或:
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
Intent intent = new Intent(MainActivity.this, NextActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
((AlarmManager) getSystemService(ALARM_SERVICE)).set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
注意:如果您需要计时器,可以在上面的代码中将alendar.getTimeInMillis()
替换为System.currentTimeMillis() + x
。 (x
是您想要等待的int
毫秒数
答案 1 :(得分:1)
使用Android API中的AlarmManager。只需按照本教程:
http://android-er.blogspot.in/2011/05/using-alarmmanager-to-start-scheduled.html
在上面的教程中,他们讨论了在一段时间后安排活动。在您的情况下,只需在当前时间和您的启动时间之间取差,并探索API以获得您想要的内容。
答案 2 :(得分:0)
如果你想在cretaion时间启动Activity,请使用AlarmManager。
我为此写了一个例子。
Intent intent = new Intent(this, YourReceiver.class);
//11:12:13 on 15/03/2014
Calendar cal=Calendar.getInstance();
cal.set(Calendar.MONTH,2);//because is started from 0
cal.set(Calendar.YEAR,2014);
cal.set(Calendar.DAY_OF_MONTH,15);
cal.set(Calendar.HOUR_OF_DAY,11);
cal.set(Calendar.MINUTE,12);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pendingIntent );
使用Contect.startActivity方法在接收者内部调用活动。 别忘了在meanifest.xml中注册接收器。