Notification
来源:互联网 发布:公司机房网络拓扑图 编辑:程序博客网 时间:2024/06/10 00:32
在intent pendingintent那篇文章中提到notification,所以就写一下notification
概念
notification就是一个展示给user的一个message,只不过他展示在特定的地方。一个就是我们手机上看到的通知的小图标,还有一个地方就是我们下拉出来的显示框。英文描述这2个地方就是:notification area notification drawer
使用
NotificationCompat.Builder object中我们创建通知的标题啊,内容啊,意图等等。NotificationCompat.Builder.build()创建notification这个对象,最后notificationmanager.notify()发布通知
创建一个简单的通知的例子:
NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(this);
.setSmallIcon(R.drawable.notification_icon);
.setContentTitle("My Notification");
.setContentText("Hello World");
Intent intent=new Intent(this,OtherActivity);
TaskStackBuilder builder=TaskStackBuilder.create(this);
builder.addParentStack(OtherActivity.class);
builder.addNextIntent(intent);
//使用TaskStackBuilder获得pendingIntent
PendingIntent pendingIntent=builder.getPendingIntent(0,PendingIntent.FLAG_UPDATA_CURRENT);
//设置通知的意图 pendingIntent
mBuilder.setContenIntent(pendingIntent);
NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//mBuilder.builder()获得一个notification对象 notify发布这个通知
//id是给这个notification的一个标记
manager.notify(id,mBuilder.builder());
android:name=".ResultActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
因为这里提到了TaskStackBuilder创建stack 那就再讲一个使用PendingIntent的方式。这种方式不需要构建stack,PendingIntent的获取直接从PendingItent这个类中获取
<activity
android:name=".ResultActivity"
...
android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true">
</activity>
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Intent notifyIntent =
new Intent(this, ResultActivity.class);
// 设置的参数代表 创建一个新的,空的task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
// 获取PendingIntent
PendingIntent notifyPendingIntent =
PendingIntent.getActivity(
this,
0,
notifyIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(notifyPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id, builder.build());
最后:
android4以后 notification里面增加了一些东西
说我知道的一个 你的notification是可以扩展的
其实就是 首先还是和前面一样创建NotificationCompat.Builder object 并向里面填充数据,只不过加上一步Builder.setStyle()其中要向其中传入一个expanded layout object
概念
notification就是一个展示给user的一个message,只不过他展示在特定的地方。一个就是我们手机上看到的通知的小图标,还有一个地方就是我们下拉出来的显示框。英文描述这2个地方就是:notification area notification drawer
使用
NotificationCompat.Builder object中我们创建通知的标题啊,内容啊,意图等等。NotificationCompat.Builder.build()创建notification这个对象,最后notificationmanager.notify()发布通知
创建一个简单的通知的例子:
NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(this);
.setSmallIcon(R.drawable.notification_icon);
.setContentTitle("My Notification");
.setContentText("Hello World");
Intent intent=new Intent(this,OtherActivity);
TaskStackBuilder builder=TaskStackBuilder.create(this);
builder.addParentStack(OtherActivity.class);
builder.addNextIntent(intent);
//使用TaskStackBuilder获得pendingIntent
PendingIntent pendingIntent=builder.getPendingIntent(0,PendingIntent.FLAG_UPDATA_CURRENT);
//设置通知的意图 pendingIntent
mBuilder.setContenIntent(pendingIntent);
NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//mBuilder.builder()获得一个notification对象 notify发布这个通知
//id是给这个notification的一个标记
manager.notify(id,mBuilder.builder());
这里面最让人困惑的就是为什么要使用TaskStackBuilder,其实就是为了添加back stack。那back stack又是为了什么呢?告诉你,就是为了你按返回不会返回到notification,而是返回home screen。 知道这个以后,你就能很好的理解代码了。就是创建一个back stack,再为这个back stack(OtherActivity的back stack)设置启动它的Intent,再从中获取PendingIntent,最后将这个pendingIntent传入通知的构建者,发出通知,完成。
当然了,在配置清单中要注意添加蓝色部分
<activityandroid:name=".ResultActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
因为这里提到了TaskStackBuilder创建stack 那就再讲一个使用PendingIntent的方式。这种方式不需要构建stack,PendingIntent的获取直接从PendingItent这个类中获取
<activity
android:name=".ResultActivity"
...
android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true">
</activity>
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Intent notifyIntent =
new Intent(this, ResultActivity.class);
// 设置的参数代表 创建一个新的,空的task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
// 获取PendingIntent
PendingIntent notifyPendingIntent =
PendingIntent.getActivity(
this,
0,
notifyIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(notifyPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id, builder.build());
最后:
android4以后 notification里面增加了一些东西
说我知道的一个 你的notification是可以扩展的
其实就是 首先还是和前面一样创建NotificationCompat.Builder object 并向里面填充数据,只不过加上一步Builder.setStyle()其中要向其中传入一个expanded layout object
0 0
- Notification
- Notification
- Notification
- Notification
- notification
- Notification
- Notification
- Notification
- Notification
- Notification
- Notification
- Notification
- Notification
- notification
- Notification
- Notification
- Notification
- Notification
- iOS开发ARC内存管理技术要点
- html的继承 extends "_base.html"
- 第十五周 项目一-验证算法
- [Golang] groupcache的简单例子
- 切换手机中英文,读取assets对应的资源文件,设置到ScrollView控件中
- Notification
- Magento调试页面空白 - 解决方法
- actionbar的以下各种属性的区别.
- 第十四周项目2--二叉树排序树中查找的路径
- Nginx的负载均衡 - 保持会话 (ip_hash)
- 关于数据库session连接数目问题
- 第十五周--项目三--B-树的基本操作
- iPhone 弹出对话框 让用户等待
- leetcode -- Binary Tree Paths -- 重点