Android timer handler schedule jobSchedule 总结

		// 启动定时器
		// 1.handler实现定时器
		handler.removeMessages(SCHEDULE_CODE);
		handler.sendEmptyMessage(SCHEDULE_CODE);
		// 2.ScheduledThreadPoolExecutor
		ScheduledUtils.getInstance(getApplicationContext()).doSchedule(new Run(getApplicationContext(), "2.ScheduledThreadPoolExecutor"), SHEDULED_TIME);
		// 3.alarm
		ScheduledUtils.getInstance(getApplicationContext()).startAlarmBroadcast(ScheduledReceiver.class, "org.moziqi.sheduled.action", SCHEDULE_CODE, SHEDULED_TIME);
		// 4. jobService
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
			JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
			ComponentName componentName = new ComponentName(this, SheduledJobService.class);
			JobInfo.Builder builder = new JobInfo.Builder(SCHEDULE_CODE, componentName);
			builder.setPeriodic(SHEDULED_TIME);
			scheduler.schedule(builder.build());
		}

源码在这里https://github.com/moziqi/ScheduledThread

放了一天的log,测试手机是小米6.0系统,看完log,发现 alarm和jobservice好坑

[2016-12-11 12:14:55] mo:ScheduledService.onCreate(L:51) --> ScheduledService.onCreate
[2016-12-11 12:14:55] mo:Run.run(L:19) --> 2.ScheduledThreadPoolExecutor
[2016-12-11 12:14:55] mo:Run.run(L:19) --> 1.handler
[2016-12-11 12:14:55] mo:AlarmService.onCreate(L:17) --> AlarmService.onCreate
[2016-12-11 12:14:55] mo:Run.run(L:19) --> 3.alarm
[2016-12-11 12:24:46] mo:SheduledJobService.onCreate(L:18) --> SheduledJobService.onCreate
[2016-12-11 12:24:46] mo:Run.run(L:19) --> 4. jobService
[2016-12-11 12:24:46] mo:SheduledJobService.onDestroy(L:24) --> SheduledJobService.onDestroy
[2016-12-11 13:14:55] mo:Run.run(L:19) --> 2.ScheduledThreadPoolExecutor
[2016-12-11 13:14:55] mo:Run.run(L:19) --> 1.handler
[2016-12-11 13:16:01] mo:SheduledJobService.onCreate(L:18) --> SheduledJobService.onCreate
[2016-12-11 13:16:01] mo:Run.run(L:19) --> 4. jobService
[2016-12-11 13:16:01] mo:Run.run(L:19) --> 3.alarm
[2016-12-11 13:16:01] mo:SheduledJobService.onDestroy(L:24) --> SheduledJobService.onDestroy
[2016-12-11 14:14:55] mo:Run.run(L:19) --> 2.ScheduledThreadPoolExecutor
[2016-12-11 14:14:55] mo:Run.run(L:19) --> 1.handler
[2016-12-11 14:53:12] mo:Run.run(L:19) --> 3.alarm
[2016-12-11 14:53:12] mo:SheduledJobService.onCreate(L:18) --> SheduledJobService.onCreate
[2016-12-11 14:53:12] mo:Run.run(L:19) --> 4. jobService
[2016-12-11 14:53:12] mo:SheduledJobService.onDestroy(L:24) --> SheduledJobService.onDestroy
[2016-12-11 15:14:55] mo:Run.run(L:19) --> 2.ScheduledThreadPoolExecutor
[2016-12-11 15:14:55] mo:Run.run(L:19) --> 1.handler
[2016-12-11 16:14:55] mo:Run.run(L:19) --> 2.ScheduledThreadPoolExecutor
[2016-12-11 16:14:55] mo:Run.run(L:19) --> 1.handler
[2016-12-11 16:56:45] mo:Run.run(L:19) --> 3.alarm
[2016-12-11 16:56:47] mo:SheduledJobService.onCreate(L:18) --> SheduledJobService.onCreate
[2016-12-11 16:56:47] mo:Run.run(L:19) --> 4. jobService
[2016-12-11 16:56:47] mo:SheduledJobService.onDestroy(L:24) --> SheduledJobService.onDestroy
[2016-12-11 16:59:46] mo:SheduledJobService.onCreate(L:18) --> SheduledJobService.onCreate
[2016-12-11 16:59:46] mo:Run.run(L:19) --> 4. jobService
[2016-12-11 16:59:46] mo:SheduledJobService.onDestroy(L:24) --> SheduledJobService.onDestroy
[2016-12-11 17:14:55] mo:Run.run(L:19) --> 2.ScheduledThreadPoolExecutor
[2016-12-11 17:14:55] mo:Run.run(L:19) --> 1.handler
[2016-12-11 17:59:23] mo:Run.run(L:19) --> 3.alarm
[2016-12-11 18:01:00] mo:SheduledJobService.onCreate(L:18) --> SheduledJobService.onCreate
[2016-12-11 18:01:00] mo:Run.run(L:19) --> 4. jobService
[2016-12-11 18:01:00] mo:SheduledJobService.onDestroy(L:24) --> SheduledJobService.onDestroy

2016-12-12,在5.x以上引入了doze模式,alarm代码已经更新

转载于:https://my.oschina.net/moziqi/blog/803919

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值