① 怎樣使用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 NotificationManager 和Notification的使用問題;多調消息,點擊後到MessageActivity消息不更新
當你收到消息把通知欄拉下來的時候MssageActivity處於onPause的狀態,當你點擊通知之後回到MssageActivity從onResume開始執行(去看看activity的生命周期),而不會重新onCreate,所以執行不到你的onCreate裡面的edit1.setText(getIntent().getStringExtra("notify"));
你可以重寫onResume方法,把edit1.setText(getIntent().getStringExtra("notify"));也放到onResume裡面就可以了
④ android 設置整個app的通知欄Notification 的聲音和震動用什麼方法
設置安卓手機通知欄提示音的方法如下。
1、以OPPO手機為例,點擊打開手機設置,如圖。
⑤ 如何使用 HTML5 的 Notification API
使用 HTML5 的 Notification API的方法:
1、申請許可權
出於安全考慮,要發送桌面消息,需要先申請用戶授權。Notification對象提供了一個靜態的方法——requestPermission(),它接收一個回調函數作為參數,並把返回值傳遞給回調函數作為參數:
Notification.requestPermission(function(status){
if(Notification.permission !== status){
Notification.permission = status;
}
});
返回值為字元串,有以下三個值:
default
granted
denied
默認為default,也就是需要詢問,表現和denied一樣。
2、創建消息
用戶授權以後,就可以通過下面方式創建一條桌面提醒了:
var n = new Notification(title, options);
options為字典,傳入Notification對象的屬性。
3、包含屬性
Notification對象有如下幾個只讀屬性:
dir(文字方向,經測試都不支持)
lang(語言)
body(消息體)
tag(標簽)
icon(icon地址)
這幾個屬性都可以在創建消息的時候,作為option傳入Notification構造函數。提一下tag屬性,在有很多消息的時候,這個屬性就非常有用,它會用擁有相同tag的最新的消息取代之前的消息,只顯示一條最新的消息。比如在一個聊天室系統中,同時和幾個人在聊天的時候,就可以以人名為tag顯示不同人的最新消息。
4、定義事件
Notification對象有四個事件,分別是
onshow()
onclick()
onclose()
onerror()
分別在消息顯示、被點擊、被關閉和出錯的時候被觸發。通常情況下,只需要處理點擊事件就夠了,比如點擊消息後跳轉到某一特定的頁面。
這四個事件的使用可以網上搜索
⑥ 安卓 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- 該方法將向用戶請求詢問顯示提示框的許可權。
⑧ nsnotification和kvo的區別和用法是什麼
【NSNotification、delegate和KVO的區別】
1.效率肯定是delegate比nsnotification高。
2. delegate方法比notification更加直接,最典型的特徵是,delegate方法往往需要關注返回值, 也就是delegate方法的結果。比如-windowShouldClose:,需要關心返回的是yes還是no。所以delegate方法往往包含 should這個很傳神的詞。也就是好比你做我的delegate,我會問你我想關閉窗口你願意嗎?你需要給我一個答案,我根據你的答案來決定如何做下一 步。相反的,notification最大的特色就是不關心接受者的態度, 我只管把通告放出來,你接受不接受就是你的事情,同時我也不關心結果。所以notification往往用did這個詞彙,比如 NSWindowDidResizeNotification,那麼nswindow對象放出這個notification後就什麼都不管了也不會等待接 受者的反應。
簡明概要的說明了KVO和NSNotification的區別:
和delegate一樣,KVO和NSNotification的作用也是類與類之間的通信,與delegate不同的是1)這兩個都是負責發出通知,剩下的事情就不管了,所以沒有返回值;2)delegate只是一對一,而這兩個可以一對多。這兩者也有各自的特點。
1)KVO的使用:
被觀察者發出 addObserver:forKeyPath:options:context: 方法來添加觀察者。
然後只要被觀察者的keyPath值變化(注意:單純改變其值不會調用此方法,只有通過getters和setters來改變值才會觸發KVO),就會在觀察者里調用方法observeValueForKeyPath:ofObject:change:context:
因此觀察者需要實現方法 observeValueForKeyPath:ofObject:change:context: 來對KVO發出的通知做出響應。
這 些代碼都只需在觀察者里進行實現,被觀察者不用添加任何代碼,所以誰要監聽誰注冊,然後對響應進行處理即可,使得觀察者與被觀察者完全解耦,運用很靈活很 簡便;但是KVO只能檢測類中的屬性,並且屬性名都是通過NSString來查找,編譯器不會幫你檢錯和補全,純手敲所以比較容易出錯。
2)NSNotification的使用
這里的通知不是由被觀察者發出,而是由NSNotificationCenter來統一發出,而不同通知通過唯一的通知標識名notificationName來區分,標識名由發送通知的類來起。
首先被觀察者自己在必要的方法A里,通過方法postNotificationName:object:來發出通知notificationName這樣發送通知者這邊的工作就完成了,每次A被調用,就會發送一次通知notificationName。
然後誰要監聽A的變化,就通過[NSNotificationCenter defaultCenter]的方法addObserver:selector:name:object:為觀察者注冊監聽name為notificationName的通知然後每次發出name為notificationName的通知時,注冊監聽後的觀察者就會調用其自己定義的方法notificationSelector來進行響應。
NSNotification的特點呢,就是需要被觀察者先主動發出通知,然後觀察者注冊監聽後再來進行響應,比KVO多了發送通知的一步,但是其優點是監聽不局限於屬性的變化,還可以對多種多樣的狀態變化進行監聽,監聽范圍廣,使用也更靈活。
⑨ Android開發之怎麼使用通知提醒功能
本文實例講述了Android開發之使用通知欄顯示提醒信息的方法。分享給大家供大家參考,具體如下:
用通知欄來提醒
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void notifyKJ() {
//獲得通知管理器,通知是一項系統服務
NotificationManager manager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
//初始化通知對象 p1:通知的圖標 p2:通知的狀態欄顯示的提示 p3:通知顯示的時間
Notification notification = new Notification(R.drawable.kjalarm, "提醒", System.currentTimeMillis());
//點擊通知後的Intent,此例子點擊後還是在當前界面
Intent descIntent = new Intent(context, com.acp.main.DesktopUI.class);
descIntent.putExtra(DesktopUI.requestCode,DesktopUI.KJ);
PendingIntent intent = PendingIntent.getActivity(context, 0, descIntent, 0);
//設置通知信息
notification.setLatestEventInfo(context, "提醒", "祝您天天快樂", intent);
notification.flags|=Notification.FLAG_
⑩ 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作為組件間解耦的方式,而不是利用它來實現非同步處理