您的位置:首页 > 移动开发 > Android开发

Android Studio 后台执行的定时操作

2016-07-25 09:10 459 查看

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);
}
}


调试输出日志如图:



OK搞定啦 每10秒输出一次。

关注微信公众号,每天都有优质技术文章,搞笑GIF图片推送哦。



2016-7-25

Scott
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息