㈠ 如何使用Notification机制来监控Mule ESB中的消息
通过这个机制,我们可以监控Mule ESB中多个方面运行的状况。
Mule ESB的Notification机制使用的了软件设计模式中常用的Observer模式,你的程序如果对某个Mule ESB的内部事件感兴趣,你需要实现相对应的接口,并注册到Notification机制中,这样就可以进行事件监听了。
例如:如果你希望监听传入或传出Mule ESB的消息(inbound, outbound),你可以实现接口,并通过程序或是mule-config.xml文件将这个接口注册到Mule ESB的实例中去。这样就可以初步实现对消息的监控。代码如下:监听器public class EndpointListener implements
<EndpointMessageNotification> {
private static final Logger LOG = Logger.getLogger(EndpointListener.class);
@Override
public void onNotification(EndpointMessageNotification notification) {
if (LOG.isDebugEnabled()) {
LOG.debug(notification);}}}配置文件<spring:beans>
<spring:bean id=messageListener class=com.jpe.esb.engine.listener.EndpointListener/>
</spring:beans>
<notifications>
<notification event=ENDPOINT-MESSAGE/>
<notification-listener ref=messageListener/>
,本站保留追究责任的权利。
㈡ notification的使用场景是什么同步还是异步
与javascript中的事件机制不同,ios里的事件广播机制是同步的,默认情况下,广播一个通知,会阻塞后面的代码:
Objc代码
-(void) clicked
{
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center postNotificationName:@"event_happend" object:self];
NSLog(@"all handler done");
}
按下按钮后,发送一个广播,此前已经注册了2个此事件的侦听者
Objc代码
-(id) init
{
self = [super init];
if(self){
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenReceive:) name:@"event_happend" object:nil];
}
return self;
}
-(void) whenReceive:(NSNotification*) notification
{
NSLog(@"im1111");
}
Objc代码
-(id) init
{
self = [super init];
if(self){
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenReceive:) name:@"event_happend" object:nil];
}
return self;
}
-(void) whenReceive:(NSNotification*) notification
{
NSLog(@"im22222");
}
执行这段代码,首先会输出im1111,然后是im22222,最后才是all handler done。调试发现,代码始终是跑在同一个线程中(广播事件的线程),广播事件之后的代码被阻塞,直到所有的侦听者都执行完响应
所以,由于NotificationCenter的这个特性,如果希望广播的事件异步处理,则需要在侦听者的方法里开启新线程。应该把Notification作为组件间解耦的方式,而不是利用它来实现异步处理
㈢ 安卓 service 中怎么用notification
1. 通知的使用场合
当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。
2. 通知的创建步骤
(1)获取NotificationManager实例,可以通过调用Conten的getSystenService()方法得
到,getSystemService()方法接收一个字符串参数用于确定获取系统的哪个服务,
这里我们传入Context.NOTIFICATION_SERVICE 即可。获取NotificationManager实例如下:
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
(2)创建Notification对象,该对象用于存储通知的各种所需信息,我们可以使用它的有参构造函数来创建。构造函数有三个参数,第
一个参数指定通知图标,第二个参数用于指定通知的ticker
内容,当通知刚被创建的时候,它会在系统的状态栏一闪而过,属于一种瞬时的提示信息。第三个参数用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态
栏时,这里指定的时间会显示在相应的通知上。创建一个Notification 对象可以写成:
Notification notification = new Notification(R.drawable.ic_launcher,"This is a ticker text",System.currentTimeMillis());
(3)调用Notification的setLatestEventIfo()方法对通知的布局进行设定,这个方法接收四个参数,第一个参数
是Context。第二个参数用于指定通知的标题内容,下拉系统状态栏就可以看到这部分内容。第三个参数用于指定通知的正文内容,同样下拉系统状态栏就可
以看到这部分内容。第四个参数用于指定实现通知点击事件的PendingIntent对象,如果暂时用不到可以先传入null。因此,对通知的布局进行设
定就可以写成:
notification.setLatestEventInfo(context, "This is content title", "This iscontent text", null);
(4)调用NotificationManager的notify()方法显示通知。notify()方法接收两个参数,第一个参数是id,
要保证为每个通知所指定的id 都是不同的。第二个参数则是Notification 对象,这里直接将我们刚刚创建好的Notification
对象传入即可。显示一个通知就可以写成:
manager.notify(1, notification);
3.代码示例
public class MainActivity extends Activity implements OnClickListener {
private Button sendNotice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendNotice = (Button) findViewById(R.id.send_notice);
sendNotice.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.send_notice:
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(
R.drawable.ic_launcher, "This is a ticker text", System.currentTimeMillis());
notification.setLatestEventInfo(this, "This is content title",
"This is content text", null);
manager.notify(1, notification);
default:
break;
}
}
}
㈣ 如何使用 HTML5 的 Notification API
1、Notification 方法
Notification 方法是用来显示和隐藏提示框的方法,Show - 该方法用来显示一个提醒,Cancel - 该方法用来移除提醒,如果提醒当前被现实则会被隐藏,如果还未被显示,则将被阻止显示。
2、Notification属性
通知属性用作事件监听器,监听提醒中的不同事件:
ondisplay- 当 notification 被显示时调用
onerror- 当 notification 出现错误时调用
onclose- 当 notification 关闭时调用
onclick- 当提示框被点击时调用
3、NotificationCenter 接口使用代码示例:
interfaceNotificationCenter{
//Notificationfactorymethods.
(inDOMStringiconUrl,inDOMStringtitle,inDOMStringbody)throws(Exception);
(inDOMStringurl)throws(Exception);
//Permissionvalues
constunsignedintPERMISSION_ALLOWED=0;
constunsignedintPERMISSION_NOT_ALLOWED=1;
constunsignedintPERMISSION_DENIED=2;
//Permissionmethods
intcheckPermission();
voidrequestPermission(inFunctioncallback);
}
interfaceWindow{
...
;
...
}
4、使用 Notification center 时需要用到4个方法:
createNotification- 如果 notification 有权限被显示,该方法将会创建一个 notification 对象,并为其填充相关的内容。如果页面没有允许 notification ,那么将抛出一个安全异常。
createHTMLNotification- 该方法类似于 createNotification ,若页面有权限显示 notification 它会返回一个相关的对象。该方法使用了一个 URL 参数来加载要显示的 HTML 内容。
checkPermission- 该方法返回该页面使用 notification 的整形权限值。PERMISSION_ALLOWED= 0,PERMISSION_NOT_ALLOWED= 1, 或者PERMISSION_DENIED= 2
requestPermission- 该方法将向用户请求询问显示提示框的权限。
㈤ 如何使用 HTML5 的 Notification API
Notification API使用方法:
在 Notification API 中会用到两个对象,第一个就是 notification 对象。
?
interface Notification : EventTarget {
// display methods
void show();
void cancel();
// event handler attributes
attribute Function ondisplay;
attribute Function onerror;
attribute Function onclose;
attribute Function onclick;
}
1.用来显示和隐藏提示框的方法:
Show - 该方法用来显示一个提醒
Cancel - 该方法用来移除提醒,如果提醒当前被现实则会被隐藏,如果还未被显示,则将被阻止显示。
Notification 属性
2.通知属性用作事件监听器,监听提醒中的不同事件:
ondisplay - 当 notification 被显示时调用
onerror - 当 notification 出现错误时调用
onclose - 当 notification 关闭时调用
onclick - 当提示框被点击时调用
第二个需要的就是 NotificationCenter 接口。
interface NotificationCenter {
// Notification factory methods.
Notification createNotification(in DOMString iconUrl, in DOMString title, in DOMString body) throws(Exception);
optional Notification createHTMLNotification(in DOMString url) throws(Exception);
// Permission values
const unsigned int PERMISSION_ALLOWED = 0;
const unsigned int PERMISSION_NOT_ALLOWED = 1;
const unsigned int PERMISSION_DENIED = 2;
// Permission methods
int checkPermission();
void requestPermission(in Function callback);
}
interface Window {
...
attribute NotificationCenter webkitNotifications;
...
}
Notification center 用来创建 notification 对象,并检查当前页面是否有显示该对象的权限。
使用 Notification center 时需要用到4个方法:
1.createNotification - 如果 notification 有权限被显示,呢么该方法将会创建一个 notification 对象,并为其填充相关的内容。如果页面没有允许 notification ,那么将抛出一个安全异常。
2.createHTMLNotification - 该方法类似于 createNotification ,若页面有权限显示 notification 它会返回一个相关的对象。该方法使用了一个 URL 参数来加载要显示的 HTML 内容。
3.checkPermission - 该方法返回该页面使用 notification 的整形权限值。PERMISSION_ALLOWED = 0, PERMISSION_NOT_ALLOWED = 1, 或者 PERMISSION_DENIED = 2
4.requestPermission - 该方法将向用户请求询问显示提示框的权限。
检查浏览器是否支持 Notification
当你准备用 notification API 做点什么之前,你需要先检查浏览器是否支持,你可以使用一下代码来检查:
?
/**
* Check if the browser supports notifications
*
* @return true if browser does support notifications
*/
function browser_support_notification()
{
return window.webkitNotifications;
}
获得显示权限
/**
* Request notification permissions
*/
function request_permission()
{
// 0 means we have permission to display notifications
if (window.webkitNotifications.checkPermission() == 0) {
window.webkitNotifications.createNotification();
} else {
window.webkitNotifications.requestPermission();
}
}
显示纯文本提示框
创建一个显示纯文本的提示框前你需要检查是否有权限显示。如果有权限我们就能使用createNotification()方法创建一个新的 notification 了,使用 createNotification() 传递图片、标题以及描述信息3参数即可。
?
/**
* Create a plain text notification box
*/
function plain_text_notification(image, title, content)
{
if (window.webkitNotifications.checkPermission() == 0) {
return window.webkitNotifications.createNotification(image, title, content);
}
}
显示 HTM L 提醒框
在显示之前我们也需要检查显示权限,如果有权限,我们可以使用createHTMLNotification(url) 方法创建,传递的 url 地址即我们要显示的页面。
?
/**
* Create a notification box with html inside
*/
function html_notification(url)
{
if (window.webkitNotifications.checkPermission() == 0) {
return window.webkitNotifications.createHTMLNotification(url);
}
}
??
㈥ 怎样使用Notification的相关Style实现不同类型的Notification
区别一:delegate针对one-to-one关系,并且reciever可以返回值给sender;notification 可以针对one-to-one/many/none,reciever无法返回值给sender;所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件。区别二:Delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。Notification:消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。区别三:效率肯定是delegate比nsnotification高。区别四:delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值,也就是delegate方法的结果。delegate用于声明委托。Notification用于通告。委托是一种引用类型,引用类型的 Shared 方法或对象的实例方法。任何具有匹配参数类型和返回类型的过程均可用来创建此委托类的实例。然后就可以通过委托实例来调用过程。
㈦ 怎么在notification中使用spannablestring
Java code? TextView name = (TextView) findViewById(R.id.name); name .setText(Html.fromHtml(getString(R.string.name ))); name .setMovementMethod(LinkMovementMethod.getInstance()); 你这样试试
㈧ android 设置整个app的通知栏Notification 的声音和震动用什么方法
设置安卓手机通知栏提示音的方法如下。
1、以OPPO手机为例,点击打开手机设置,如图。