1、notification使用:
PendingIntent中 getActivity(Context, int, Intent, int) 跳转到一个activity组件 getBroadcast(Context, int, Intent, int) 发送一个广播组件 getService(Context, int, Intent, int) 启动一个服务组件 /** Notification构造器 */ NotificationCompat.Builder mBuilder; int id; mBuilder = new NotificationCompat.Builder(context); mBuilder.setContentTitle(title) .setContentText(content) .setAutoCancel(true) // .setNumber(number)//显示数量 .setTicker("title")//通知首次出现在通知栏,带上升动画效果的 .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示 .setPriority(Notification.PRIORITY_DEFAULT)//设置该通知优先级 // .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消 .setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接) .setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合: //Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission .setSmallIcon(R.mipmap.ic_launcher); PendingIntent pendingIntent = PendingIntent.getActivity(context,id,resultIntent, intentCancelCurrent ? PendingIntent.FLAG_CANCEL_CURRENT : PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(pendingIntent); NotificationManager mNotificationManager= (NotificationManager)context.getSystemService(NOTIFICATION_SERVICE); mNotificationManager.notify(id, mBuilder.build());2、pendingIntent+alarm使用:
//AlarmNotificationReceiver 广播,如上面的代码可以发送通知等 Intent intent=new Intent(App.getInstance(), AlarmNotificationReceiver.class); Model notificationModel=new Model(title,content,classType,json,requestCode); // Android 6.0 版本开始, PendingIntent不能保证支持传递Parcelable intent.putExtra("notificationModel", ParcelableUtil.marshall(notificationModel)); // 创建PendingIntent对象 PendingIntent pi = PendingIntent.getBroadcast( App.getInstance(), requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); tempPi=pi; // 获取AlarmManager对象 AlarmManager aManager = (AlarmManager) App.getInstance().getSystemService(ALARM_SERVICE); // 设置AlarmManager将在Calendar对应的时间启动指定组件 if (aManager != null) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), pendingIntent); }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { aManager.setExact(AlarmManager.RTC_WAKEUP, data, pi); } else { aManager.set(AlarmManager.RTC_WAKEUP, data, pi); } }AlarmManager请转: 关于使用AlarmManager的注意事项,