设为首页 加入收藏

TOP

Android长时间定时任务实现
2018-10-07 10:09:33 】 浏览:103
Tags:Android 时间 定时 任务 实现

在服务的onStartCommand方法里面使用AlarmManager 定时唤醒发送广播,在广播里面启动服务


每次执行startService方法启动服务都会执行onStartCommand


1、服务定时唤醒  60秒发一次广播


public class MediaService extends Service {
    public MediaService() {


    }


    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }


    /*每次调用startService启动该服务都会执行*


AlarmManager的常用方法有三个:


type表示闹钟类型,startTime表示闹钟第一次执行时间,long intervalTime表示间隔时间,PendingIntent表示闹钟响应动作


对以上各个参数的详细解释 
闹钟的类型:


startTime: 
闹钟的第一次执行时间,以毫秒为单位,一般使用当前时间。


intervalTime:执行时间间隔。


PendingIntent : 
PendingIntent用于描述Intent及其最终的行为.,这里用于获取定时任务的执行动作。 


2、接收到广播调用startService启动服务 


/
    public int onStartCommand(Intent intent, int flags, int startId) {


        Log.d("TAG", "启动服务:" + new Date().toString());


        AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);


        long triggerTime = SystemClock.elapsedRealtime() + 60000;
        Intent i = new Intent(this, AlarmReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
        manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, pi);
        return super.onStartCommand(intent, flags, startId);
    }


}


 


public class AlarmReceiver extends BroadcastReceiver {


    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, MediaService.class);
        context.startService(i);
    }
}


运行结果:



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇PHP引用(&)使用详解 下一篇让 Python 代码更易维护的七种武器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目