Notification通知,在应用中非常常见,比如一些消息推送,收到短信等。下面来看看Android中Notification的机制是怎样的。首先来看完成一个Notification应用的静态结构图:
Android中对Notification的设计使用了建造者模式。Notification包括Action,Intent,以及显示样式等。因此将这些工作封装起来单独完成,是必要的。有关建造者模式的知识可以查看设计模式中的文章。具体的实现步骤分为5步:
1. 创建,并设置意图对象
2. 设置其他状态
3. 建造Notification
4. 加载自定义布局view
5. 获取通知管理器 ,并注册通知
下面看一看具体如何实现一个自定义的Notification。
核心代码:
private void CreateNotification() {
NotificationCompat.Builder builder = new Builder(this);
/** 1 创建,并设置意图对象 */
// 创建意图对象,当点击通知时,重新加载MainActivity
Intent i = new Intent(this, MainActivity.class);
PendingIntent intent = PendingIntent.getActivity(this, 0, i,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(intent);
/** 2 设置其他状态 */
builder.setTicker("自定义Notification!");
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setAutoCancel(true);
/** 3 build,建造Notification */
Notification notification = builder.build();
/** 4 加载自定义布局view */
RemoteViews remoteView = new RemoteViews(getPackageName(),
R.layout.notification_layout);
// 配置remoteView
String time = DateFormat.getDateTimeInstance().format(
new Date().toString());
String text = getResources().getString(R.string.collapsed, time);
remoteView.setTextViewText(R.id.textView1, text);
/** 5 获取通知管理器 ,并注册通知 */
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify(0, notification);
}
具体demo可以看http://github.com/Luise-li