上篇介绍了service及其生命周期,这里scheduleAtFixedRate介绍java api中可直接查;这里写一个后台定时执行任务的例子,直接上代码:
ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类;
ThreadPoolExecutor,它可另行安排在给定的延迟后运行命令,或者定期执行命令。需要多个辅助线程时,
或者要求 ThreadPoolExecutor 具有额外的灵活性或功能时,此类要优于 Timer。一旦启用已延迟的任务就执行它,但是有关何时启用,启用后何时执行则没有任何实时保证。按照提交的先进先出 (FIFO) 顺序来启用那些被安排在同一执行时间的任务。
public class ServerO extends Service {
private ScheduledThreadPoolExecutor mPool = null;//ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类;
private long firstDelayTime = 3000;
private long delayTime = 10 * 60 * 1000;
private DBMang_Order dbMang_Order;
@Override
public void onCreate() {
super.onCreate();
mPool = new ScheduledThreadPoolExecutor(1);
dbMang_Order = DBMang_Order.getInstance(getApplicationContext());
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//需要轮循的内容,这里查看数据是否有未确认订单,数据库这边不写了,参考《Android数据存储——SQLite数据库(模板)》http://blog.csdn.net/metis100/article/details/44408229
ArrayList<OrderUncheck> uncheckList = dbMang_Order.query();
}
}, firstDelayTime, delayTime, TimeUnit.MILLISECONDS);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
别忘了xml中设置:
<service
android:name="com.wangll.service.ServerO"
android:enabled="true"
android:exported="false" />
在Activity中启动进程:
startService(new Intent(this, ServerO.class));
更多交流可加Android技术讨论群:71262831
扫一扫,一起坐看风云变幻。扫描下方二维码关注it达人(也可微信搜索:it达人)。
为您推送最新开发资源、分享it牛人职业发展经验:
用service、scheduleAtFixedRate写一个后台定时执行任务
原文:http://blog.csdn.net/metis100/article/details/44574103