Android中PendingIntent的简单使用
来源:互联网 发布:国盛证券交易软件 编辑:程序博客网 时间:2024/05/29 15:07
PendingIntent主要用于包装一个Intent及该Intent对应的动作。
例如,PendingIntent调用getSerivce接口,可以包装一个启动Service的Intent;
调用getActivity接口,可以包装一个启动Activity的Intent。
PendingIntent一般与AlarmManager、Notification等一起工作。
例如:
public static void setServiceAlarm(Context context, boolean isOn) { //得到启动服务对应的Intent Intent i = PollService.newIntent(context); //利用PendingIntent的getService接口,得到封装后的PendingIntent //第二个参数,是区分PendingIntent来源的请求代码 //第四个参数,是决定如何创建PendingIntent的标志位 PendingIntent pi = PendingIntent.getService(context, 0, i, 0); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); if (isOn) { //AlarmManager循环处理PendingIntent //其中,第一个参数描述定时器时间基准常量 //第二个参数指定定时器启动的时间 //第三个参数指定时间间隔 alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), POLL_INTERVAL, pi); } else { //取消定时器 alarmManager.cancel(pi); //同时调用PendingIntent的cancel接口 pi.cancel(); }}
使用AlarmManager安排周期任务后,PendingIntent将被定时处理,
每次都可以拉起其中封装的服务。
上述例子中,提到了创建PendingIntent时,可以指定标志位,例如:
public static boolean isServiceAlarmOn(Context context) { Intent i = PollService.newIntent(context); //指定FLAG_NO_CREATE后,不会主动创建PendingIntent,而是读取系统中的记录, PendingIntent pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_NO_CREATE); return pi != null;}
PendingIntent与Notification合作的代码类似于:
...........Resources res = getResources();Intent i = PhotoGalleryActivity.newIntent(this);PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0);//这里使用的支持库中的NotificationCompatNotification notification = new NotificationCompat.Builder(this) //设置通知对应的一些信息 .setTicker(res.getString(R.string.new_pictures_title)) .setSmallIcon(android.R.drawable.ic_menu_report_image) .setContentTitle(res.getString(R.string.new_pictures_title)) .setContentText(res.getString(R.string.new_pictures_text)) //添加通知对应的PendingIntent //一旦点击通知后,PendingIntent将被处理 .setContentIntent(pi) .setAutoCancel(true) .build();NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);notificationManager.notify(0, notification);.............
0 0
- Android中PendingIntent的简单使用
- Android PendingIntent的使用
- PendingIntent android.app.PendingIntent.getActivity的使用
- Android中pendingIntent的理解
- Android中pendingIntent的详解
- Android中pendingIntent的举例
- android中pendingIntent的用法
- Android中pendingIntent的浅谈
- 关于android中widget的PendingIntent的使用
- android之PendingIntent的使用
- Android开发-对于PendingIntent的简单理解
- 关于android中PendingIntent.getBroadcase的注册广播VSAlarmManager .cancle(PendingIntent)如何区分PendingIntent
- Android中pendingIntent的深入理解
- Android中pendingIntent的深入理解
- Android中pendingIntent的深入理解
- Android中pendingIntent的深入理解
- Android中pendingIntent的深入理解
- Android中pendingIntent的深入理解
- MySQL常用函数之日期时间函数
- PAT甲级练习1029. Median (25)
- EDA软件_Cadence_Allegro 16.6元器件封装制作
- HPUOJ---2017寒假作业--专题-1/I-the Sum of Cube
- 注释镇楼
- Android中PendingIntent的简单使用
- 数据库——分类目录
- 【Android】安卓开发实战之使用layout_weight优化布局
- Map集合的四种遍历方式
- python复习笔记[4]——列表
- Android中JobScheduler和JobService的简单使用示例
- 01R与Rstudio的获取与安装
- AFNetworking打印输出服务器返回的错误信息
- 解决ifconfig 只显示lo