这个问题可能与这个问题和这个问题有关,但与那些问题不同,我想在特定时间开始它们(比如 15/03/2014 的 11:12:13)。
我实际上正在开发一个在给定时间发送消息的项目(SMS)。
试试这个代码,我测试了它:
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
您想要等待的毫秒数)
使用Android API 中的AlarmManager。只需按照本教程进行操作:
http://android-er.blogspot.in/2011/05/using-alarmmanager-to-start-scheduled.html。
在上面的教程中,他们讨论了在一段时间后安排活动。在您的情况下,只需将当前时间与您启动和探索 API 的时间之间的差异来获取您想要的内容。
如果您想在创建时间启动 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 中注册接收器。