Java +安卓 定时任务

曾无好事来相访,赖尔高文一起予。这篇文章主要讲述Java +安卓 定时任务相关的知识,希望能为你提供帮助。
1.android 自带闹钟定时任务安卓闹钟可以配合广播来实现(不推荐),系统资源浪费,安卓系统在5.0以后的定时 
任务貌似触发时间不准了,因为了为了省电。

//获取系统闹钟 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(ReportDetailsActivity.this, ReportDetailsActivity.MyReceiver.class); pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0); //开启定时任务 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, 5 * 1000, pendingIntent);

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
记得在manifeast 文件配置该广播
public static class MyReceiver extends BroadcastReceiver {@Override public void onReceive(Context context, Intent intent) { if (bo > 0) { if (bo > 240) {//刷票 handler.sendEmptyMessage(3); //弹窗警告 刷票 } else { handler.sendEmptyMessage(2); } }} }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
在OnDestroy()中取消闹钟
@Override protected void onDestroy() { alarmManager.cancel(pendingIntent); }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
2.开启Thread睡5s中去定时操作任务。
class MyRunnableimplements Runnable{@Override public void run() { while (isLoop){ try {if (bo > 0) { if (bo > 240) {//刷票 handler.sendEmptyMessage(3); //弹窗警告 刷票 } else { handler.sendEmptyMessage(2); } } Thread.sleep(5000); }catch (Exception e){ e.printStackTrace(); } } } }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
在onCreate()方法中开启:
loopThread=new Thread(new MyRunnable()); loopThread.start();

  • 1
  • 2
  • 1
  • 2
在页面销毁时终止掉该Thread
isLoop=false; loopThread.interrupt();

  • 1
  • 2
  • 1
  • 2
3. 使用timer类。开启timer
Timer timer=new Timer(); timer.schedule(new TimerTask() { @Override public void run() { //TODO ...} },new Date(),5000);

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
终止timer
timer.cancel();

  • 1
  • 1
以上三种定时任务除了第一种不要随便使用外,推荐使用第三种和第二种。
【Java +安卓 定时任务】 


    推荐阅读