android中的定时任务。由AlarmManager对象进行管理
1.定时唤醒广播接受者
直接贴代码,在代码中说明
AlarmController.java
public class AlarmController extends Activity{private Toast mToast;private static final String TAG = "app";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.alarm_controller);Button button = (Button)findViewById(R.id.one_shot);button.setOnClickListener(oneShotListener);button = (Button)findViewById(R.id.start_repeating);button.setOnClickListener(startRepeatingListener);button = (Button)findViewById(R.id.stop_repeating);button.setOnClickListener(stopRepeatingListener);}private OnClickListener oneShotListener = new OnClickListener() {@Overridepublic void onClick(View v) {//只进行一次定时,不重复执行AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());calendar.add(Calendar.SECOND, 30);//设置30秒后执行/* * 根据PendingIntent.getBroadcast * 指明定时唤醒广播接收者 * */PendingIntent pending = PendingIntent.getBroadcast(AlarmController.this, 0, new Intent(AlarmController.this,OneShotAlarm.class), 0);am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pending);  //表示在指定时间后执行if(mToast!=null){mToast.cancel();}mToast.makeText(AlarmController.this, "one_shot_scheduled", Toast.LENGTH_LONG).show();}};private OnClickListener startRepeatingListener = new OnClickListener() {@Overridepublic void onClick(View v) {//重复执行AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);PendingIntent pend = PendingIntent.getBroadcast(AlarmController.this, 0, new Intent(AlarmController.this,RepeatingAlarm.class), 0);long triggerAtTime = SystemClock.elapsedRealtime();triggerAtTime +=15*1000;//表示第一次执行15秒后am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,   triggerAtTime, 15*1000, pend);//表示过15秒重复唤醒广播接受者if(mToast!=null){mToast.cancel();}mToast.makeText(AlarmController.this, "repeating_scheduled", Toast.LENGTH_LONG).show();}};private OnClickListener stopRepeatingListener = new OnClickListener() {@Overridepublic void onClick(View v) {//取消alarmAlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);PendingIntent pend = PendingIntent.getBroadcast(AlarmController.this, 0, new Intent(AlarmController.this,RepeatingAlarm.class), 0);am.cancel(pend);if(mToast!=null){mToast.cancel();}mToast.makeText(AlarmController.this, "stop_repeating_scheduled", Toast.LENGTH_LONG).show();}};}


然后可以定期执行OneShotAlarm和RepeatingAlarm中的onRecevier中的内容

2.1.定时创建service
关键代码:
//注意此方法PendingIntent.getService()PendingIntent pend = PendingIntent.getService(this, 0, new Intent(this,AlarmService_Service.class), 0);AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);long firstTime = SystemClock.elapsedRealtime();am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 15*1000, pend);


完整例子:


更多相关文章

  1. material design 的android开源代码整理
  2. Android Studio代码混淆,开启Proguard,稍微总结一下
  3. android查询软件(身份证号,号码归属等)源代码
  4. android Java代码的启动
  5. Android 代码设置来电铃声
  6. android 执行shell命令代码
  7. android 开发中常用颜色,以及一些颜色的代码
  8. Android Camera子系统之源代码View

随机推荐

  1. android commend build.xml
  2. [002] Android系统简介
  3. j2me与android的区别
  4. 利用android的Debug调试分析源码
  5. Android(安卓)NDK 入门之开发环境搭建
  6. 处女男学Android(十二)---Android(安卓)菜
  7. Android中获取文本宽度和高度
  8. Android控件之TextView全解析
  9. Android基于OpenCV通过JNI识别并显示人脸
  10. Android架构组件—ViewModel