因为Timer不能唤醒cpu,所以会在省电的原因下失效,所以需要唤醒cpu在后台稳定化的执行任务,AlarmManager能够唤醒cpu

这个例子讲解了如何通过Service来在后他每一个小时执行.特定的任务,原理是在Service里面设置一个一小时定时,然后到了一个小时以后启动BroadCast,然后在onReceive方法中再次启动Service,这样每一个小时就启动一次Service,行程循环

代码如下

activity

 protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Intent intent = new Intent(this,LongRunningService.class);        startService(intent);    }

service

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("LongRunningService", "excuted" + new Date().toString());            }        }).start();        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);        int anHour = 60*60*1000;        long trigerAtTime = SystemClock.elapsedRealtime()+anHour;        Intent alarmIntent = new Intent(this,AlarmReceive.class);        PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,alarmIntent,0);        manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,trigerAtTime,pendingIntent);        return super.onStartCommand(intent, flags, startId);    }}

receiver

public void onReceive(Context context, Intent intent) {        // TODO: This method is called when the BroadcastReceiver is receiving        // an Intent broadcast.        Intent i = new Intent(context,LongRunningService.class);        context.startService(i);    }}

更多相关文章

  1. Android使用Bmob后台服务器的基础配置与操作(一)
  2. Android 播放器硬解前后台切换黑屏问题
  3. Android 轻松实现后台搭建+APP版本更新
  4. Android中如何实现后台执行定时任务
  5. Android开发学习笔记-关于Android的消息推送以及前后台切换
  6. android 前后台运行判断(使用场景如:在app聊天中,如果前端运行不发
  7. Android 利用AudioManager控制后台音乐播放器暂停,播放

随机推荐

  1. 修改编译Nexus5x android7.0.1(N)版本内
  2. Android(安卓)高清加载长图或大图方案
  3. android Fragments详解七:fragement示例
  4. 2020-08-31 2020常用面试题
  5. Android实现搜索历史功能
  6. 解决eclipse中查看android工程代码出现an
  7. 【Android】上传代码至JCenter
  8. Kotlin学习笔记---持续更新中
  9. Android回顾/Intent的使用
  10. Android之Bundle类