Android Studio 后台执行的定时操作

Android Studio 后台执行的定时操作

后台定时操作案例


后台定时操作案例

执行一个后台10s的定时并在日志中输出

package com.example.scott.servicebestpractice;
//这里一定载入java.util包
import java.util.Date;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;

import android.util.Log;



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

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        new Thread(new Runnable() {
            @Override
            public void run() {
            //调用java.util.Data中的方法输出时间
                Log.d("MyService","executed at"+new Date().toString());
            }
        }).start();
        //获取AlarmManager 实例
        AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
        int anHour = 10*1000;
        //触发时间
        long triggerAtTime = SystemClock.elapsedRealtime()+anHour;
        Intent i = new Intent(this,AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,i,0);
        //ELAPSED_REALTIME_WAKEUP表示定时任务的触发时间从系统开机开始算起,但会唤醒CPU。在10秒钟后就会执行AlarmReceiver中的onReceive方法
        manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pendingIntent);

        return super.onStartCommand(intent, flags, startId);
    }
}
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    //启动MyService,形成一个循环,这样每10秒钟后MyService都会执行一次。这样一个长期的后台定时服务就完成了。
        Intent i = new Intent(context,MyService.class);
        context.startService(i);
    }
}

调试输出日志如图:
Android Studio 后台执行的定时操作_第1张图片
OK搞定啦 每10秒输出一次。

关注微信公众号,每天都有优质技术文章,搞笑GIF图片推送哦。
Android Studio 后台执行的定时操作_第2张图片

2016-7-25

Scott

你可能感兴趣的:(Android)