在开发过程中,我们可能要每隔一段时间,去执行一次任务,我们就可以用AlarmManager和Service实现定时任务,比如说,每隔5秒钟,请求一次网络数据
MainActivity.java
package com.zhoujian.task.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.zhoujian.task.R;
import com.zhoujian.task.service.MyService;
public class MainActivity extends AppCompatActivity {@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(MainActivity.this, MyService.class);
startService(intent);
}
}
MyService.java
package com.zhoujian.task.service;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;
/**
* Created by zhoujian on 2017/3/23.
*/public class MyService extends Service
{public static final String TAG = "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()
{
Log.i(TAG, "5秒后run()方法执行了!");
}
}).start();
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
//5秒的时间
inttime = 1000*5;
//获取系统开机至今所经历的毫秒
long startTime = SystemClock.elapsedRealtime()+time;
Intent in= new Intent(this,MyService.class);
PendingIntent pendingIntent = PendingIntent.getService(this,0,in,0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,startTime,pendingIntent);
return super.onStartCommand(intent, flags, startId);
}@Override
public void onDestroy() {
super.onDestroy();
}
}
【用AlarmManager和Service实现定时任务】
文章图片
推荐阅读
- 多渠道|Android 组件化在公用Module里实现多渠道打包配置
- Android基础|EventBus源码分析之订阅-发布模型
- Android基础|Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- HandlerThread(子线程也可以有消息传递机制)
- android ViewId自动注解使用详解(ViewInject)
- Android|Android属性动画 Property animation
- JNI与底层调用-1
- #|FutureTask 使用场景介绍
- #|静态内部类创建单例的实现和优点
- #|View的三大流程是什么,加以简单说明