android.content.Context
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
与应用程序环境的全局信息的接口。 这是一个抽象类,它的实现由android系统提供。 它允许访问特定于应用程序的资源和类,以及用于应用程序级操作(例如启动活动,广播和接收意图等)的呼叫。
android.app.AlarmManager
int type:闹钟的类型,常用的有5个值:AlarmManager.ELAPSED_REALTIME、AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、AlarmManager.RTC_WAKEUP、AlarmManager.POWER_OFF_WAKEUP。
AlarmManager.ELAPSED_REALTIME表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;
AlarmManager.ELAPSED_REALTIME_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2;
AlarmManager.RTC表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1;
AlarmManager.RTC_WAKEUP表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;
AlarmManager.POWER_OFF_WAKEUP表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4;不过本状态好像受SDK版本影响,某些版本并不支持;
android.os.SystemClock
android.app.PendingIntent
pendingIntent字面意义:等待的,未决定的Intent。要得到一个pendingIntent对象,使用方法类的静态方发类getActivity(Context, int, Intent, int),getBroadcast(Context, int, Intent, int),getService(Context, int, Intent, int) 分别对应着Intent的3个行为,跳转到一个activity组件、打开一个广播组件和打开一个服务组件。参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。
pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而
Intent intent=new Intent(this,NextActivity.class);
PendingIntent pendIntent=PendingIntent.getActivity(this,0,intent,0);
AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);
long triggerAtTime=SystemClock.elapsedRealTime()+10*1000;//10秒后执行
alarmManager.set(ELAPSED_REALTIME,triggerAtTime,pendingIntent);
/**后台服务中的定时任务*/
public class LongRunningService extends Service{
@Override
public IBinder onBinder(Intent intent){
return null;
}
@Override
public int onStartCommand(Intent intent,int flags,int startId){
new Thread(new Runnabel{
@Override
public void run(){
}
});
Intent intent=new Intent(this,LongRunningService.class);
PendingIntent pendIntent=PendingIntent.getService(this,0,intent,0);
AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);
long triggerAtTime=SystemClock.elapsedRealTime()+10*1000;//10秒后执行
alarmManager.set(ELAPSED_REALTIME,triggerAtTime,pendingIntent);
return super.onStartCommand(intent,flags,startId);
}
}
/**启动服务*/
Intent intent=new Intent(context.LongRunningService.class);
context.startService(intent);