Android 之 PendingIntent用法介绍
程序员文章站
2022-05-16 23:32:58
...
PendingIntent:
1. 英文释义:intent,意图; pending 表示即将发生的事;
2. 作用:PendingIntent这个类用来处理即将发生的事;
3. 例如:在通知Notification中用于页面跳转,但不马上跳转;
4. 对比:Intent 是及时启动的,intent随activity消失而消失;PendingIntent可以看作是对intent的包装,
5. 提示:Intent 一般是用来作Activity、 Service、BroadcastReceiver之间传递数据,而Pendingintent,一般用在Notification上,可以理解为延迟执行的intent;
6. 获取PendingIntent的实例:三个静态方法可以获取
a) PendingIntent.getBroadcast();
b) PendingIntent.getActivity();
c) PendingIntent.getService();
7. 说明:由于pendingintetn 中,保存了当前APP 的context,使它赋予外部App一种能力,使得外部APP可以如同当前APP一样执行pendingintent里的intetn,就算执行时当前的APP已经不存在了,也能通过存在pendingintent的context照样执行intent,另外还可以处理intent执行后的操作;经常和alermaner 和notificationmanager一起使用。[/size]
主程序入口:[/size]
结合PendingIntent 功能实现墙纸的切换:
1. 英文释义:intent,意图; pending 表示即将发生的事;
2. 作用:PendingIntent这个类用来处理即将发生的事;
3. 例如:在通知Notification中用于页面跳转,但不马上跳转;
4. 对比:Intent 是及时启动的,intent随activity消失而消失;PendingIntent可以看作是对intent的包装,
5. 提示:Intent 一般是用来作Activity、 Service、BroadcastReceiver之间传递数据,而Pendingintent,一般用在Notification上,可以理解为延迟执行的intent;
6. 获取PendingIntent的实例:三个静态方法可以获取
a) PendingIntent.getBroadcast();
b) PendingIntent.getActivity();
c) PendingIntent.getService();
7. 说明:由于pendingintetn 中,保存了当前APP 的context,使它赋予外部App一种能力,使得外部APP可以如同当前APP一样执行pendingintent里的intetn,就算执行时当前的APP已经不存在了,也能通过存在pendingintent的context照样执行intent,另外还可以处理intent执行后的操作;经常和alermaner 和notificationmanager一起使用。[/size]
主程序入口:[/size]
package com.sun.pengingintent; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; import android.os.Bundle; /** * 功能:使用服务实现墙纸的切换 * @author Administrator * */ public class MainActivity extends Activity { private AlarmManager alarmManager ; // 程序入口 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取系统服务对象 alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE); setWall(); } /** * 设置墙纸 */ public void setWall(){ PendingIntent pi = PendingIntent.getService(this,0, new Intent("SERVICE_TO_SETWALL"), PendingIntent.FLAG_UPDATE_CURRENT); // 类型 ,执行延迟的时间,实行时间间隔,动作 alarmManager.setRepeating(alarmManager.RTC_WAKEUP, 0, 2000, pi); // alarmManager.cancel(pi);//取消 } }
结合PendingIntent 功能实现墙纸的切换:
package com.sun.pengingintent; import android.app.Service; import android.app.WallpaperManager; import android.content.Intent; import android.os.IBinder; /** * 实现效果 -- 墙纸的切换 , 背景图片 * @author Administrator * */ public class WallService extends Service { private int[] res = new int[]{R.drawable.a,R.drawable.b,R.drawable.c}; // 切换图片资源 private WallpaperManager wallpaperManager; //墙纸管理器 private int index; // 资源索引 // 绑定服务 public IBinder onBind(Intent intent) { return null; } // 创建服务 public void onCreate() { super.onCreate(); wallpaperManager = WallpaperManager.getInstance(WallService.this); // 获取壁纸管理器对象 } // 销毁服务 public void onDestroy() { super.onDestroy(); } /** * 启动服务 * 每次启动开始获取资源 */ public void onStart(Intent intent, int startId) { super.onStart(intent, startId); try{ if(index>=3){ index = 0; } wallpaperManager.setResource(res[index++]); // 设置资源 }catch(Exception ex){ ex.printStackTrace(); } } }
上一篇: 关于Android短信管理