Android 定时任务

思路

  1. 在主activity里调用定时任务服务;
  2. 定时任务服务内实现业务逻辑『本例只打印一个时间log』,向alarm广播发消息;
  3. alarm广播回调定时任务服务;

『2』『3』实现闭环循环。

效果

07-13 10:44:45.461  10265-18533/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:44:45 GMT+08:00 2015
07-13 10:44:50.522  10265-18637/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:44:50 GMT+08:00 2015
07-13 10:44:55.545  10265-18774/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:44:55 GMT+08:00 2015
07-13 10:45:00.587  10265-18900/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:00 GMT+08:00 2015
07-13 10:45:05.617  10265-18998/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:05 GMT+08:00 2015
07-13 10:45:10.640  10265-19104/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:10 GMT+08:00 2015
07-13 10:45:15.682  10265-19198/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:15 GMT+08:00 2015
07-13 10:45:20.734  10265-19299/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:20 GMT+08:00 2015
07-13 10:45:25.765  10265-19410/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:25 GMT+08:00 2015
07-13 10:45:30.813  10265-19525/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:30 GMT+08:00 2015
07-13 10:45:35.847  10265-19547/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:35 GMT+08:00 2015
07-13 10:45:40.899  10265-19572/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:40 GMT+08:00 2015
07-13 10:45:45.917  10265-19610/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:45 GMT+08:00 2015
07-13 10:45:50.959  10265-19658/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:50 GMT+08:00 2015
07-13 10:45:55.986  10265-19682/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:45:55 GMT+08:00 2015
07-13 10:46:01.036  10265-19723/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:46:01 GMT+08:00 2015
07-13 10:46:06.059  10265-19734/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:46:06 GMT+08:00 2015
07-13 10:46:11.112  10265-19755/cf.icbd.aboutservice D/CBD﹕ LongRunningService:Mon Jul 13 10:46:11 GMT+08:00 2015

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent(MainActivity.this , LongRunningService.class) ;
        startService(intent) ;
    }
}

LongRunningService.java

public class LongRunningService extends Service {
    public LongRunningService() {
    }

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

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        Log.d("CBD","LongRunningService:"+new Date().toString()) ;
                    }
                }
        ).start();

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE) ;

        Intent intent1 = new Intent(this, AlarmReceiver.class) ; //触发广播,广播回调此方法,实现循环
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,intent1,0) ;

        long triggerTime = SystemClock.elapsedRealtime() + 5*1000 ; //每隔5秒触发一次
        alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerTime,pendingIntent);


        return super.onStartCommand(intent, flags, startId);
    }
}

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver {
    public AlarmReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {


        Intent i = new Intent(context, LongRunningService.class) ;
        context.startService(i) ;

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值