Android中使用AlarmManager需注意设置进程属性
16lz
2021-01-23
在Android中,AlarmManager提供了不受休眠状态的系统定时功能,其一般使用方法如下。
1、创建一个BroadcastReceiver类的子类,接收定时器事件:
public class MyReceiver extends BroadcastReceiver {......}
2、在AndroidMenifest.xml中定义上述广播事件接收类的定义:
3、在程序中在需要时设置定时器:
Intent intent = new Intent(context,MyReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP , SystemClock.elapsedRealtime() + ms, pendingIntent);
经过ms毫秒之后,MyReceiver会被调用,从而实现定时触发。
但是,上述实现存在一个问题:如果设置定时器的进程被杀死之后,定时器事件就不会触发。而在Android中,系统在需要时会自动终止后台进程,因此在定时过程中,进程被杀死的可能性是非常之大的,特别是在一些内存较少的设备中,基本上后台进程所设置的定时器很难被触发。
为了让定时器在进程被终止后还能触发,需要对上述实现做一个小的修改:在AndroidMefest.xml中如下定义广播接收类:
更多相关文章
- android 自定义xml属性
- Android 多进程学习
- Android自定义对话框的大小
- android构建自定义View和自定义组件
- 使用attrs.xml自定义属性
- 自定义android圆形ImageView
- Android 开发:(十四)NavigationBar篇-自定义顶部导航栏
- Android 自定义PopupWindow实现悬浮窗效果
- Android 源码中添加自定义服务并提供给上层使用