亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android中利用App實現消息推送機制的代碼

2020-04-11 12:43:44
字體:
來源:轉載
供稿:網友
1.消息推送機制
服務器器端需要變被動為主動,通知客戶一些開發商認為重要的信息,無論應用程序是否正在運行或者關閉。
我想到了一句話:don't call me,i will call you!
qq今天在右下角彈出了一個對話框:"奧巴馬宣布本拉登掛了...",正是如此。
自作聰明,就會帶點小聰明,有人喜歡就有人討厭。
2.獨立進程
無論程序是否正在運行,我們都要能通知到客戶,我們需要一個獨立進程的后臺服務。
我們需要一個獨立進程的后臺服務。
在androidmanifest.xml中注冊service時,有一個android:process屬性,如果這個屬性以"."開頭,則為此服務開啟一個
全局的獨立進程,如果以":"開頭則為此服務開啟一個為此應用私有的獨立進程。舉個具體的例子吧,我們新建了一個
application,創建了主進程com.cnblogs.tianxia,那么:
復制代碼 代碼如下:

<!--下面會創建一個全局的com.cnblogs.tianxia.message的獨立進程-->
<service android:name=".service.messageservice" android:label="消息推送" android:process=".message" />
<!--或者-->
<!--下面會創建一個應用私有的com.cnblogs.tianxia:message的獨立進程-->
<service android:name=".service.messageservice" android:label="消息推送" android:process=":message" />
我們沒必要建立一個全局的,本文選擇第二種方案,創建一個當前應用私有的獨立進程。
3.通知用戶和點擊查看
public class messageservice extends service {

//獲取消息線程
private messagethread messagethread = null;

//點擊查看
private intent messageintent = null;
private pendingintent messagependingintent = null;

//通知欄消息
private int messagenotificationid = 1000;
private notification messagenotification = null;
private notificationmanager messagenotificatiomanager = null;

public ibinder onbind(intent intent) {
return null;
}

@override
public int onstartcommand(intent intent, int flags, int startid) {
//初始化
messagenotification = new notification();
messagenotification.icon = r.drawable.icon;
messagenotification.tickertext = "新消息";
messagenotification.defaults = notification.default_sound;
messagenotificatiomanager = (notificationmanager)getsystemservice(context.notification_service);

messageintent = new intent(this, messageactivity.class);
messagependingintent = pendingintent.getactivity(this,0,messageintent,0);

//開啟線程
messagethread = new messagethread();
messagethread.isrunning = true;
messagethread.start();

return super.onstartcommand(intent, flags, startid);
}

/**
* 從服務器端獲取消息
*
*/
class messagethread extends thread{
//運行狀態,www.3ppt.com下一步驟有大用
public boolean isrunning = true;
public void run() {
while(isrunning){
try {
//休息10分鐘
thread.sleep(600000);
//獲取服務器消息
string servermessage = getservermessage();
if(servermessage!=null&&!"".equals(servermessage)){
//更新通知欄
messagenotification.setlatesteventinfo(messageservice.this,"新消息","奧巴馬宣布,本拉
登兄弟掛了!"+servermessage,messagependingintent);
messagenotificatiomanager.notify(messagenotificationid, messagenotification);
//每次通知完,通知id遞增一下,避免消息覆蓋掉
messagenotificationid++;
}
} catch (interruptedexception e) {
e.printstacktrace();
}
}
}
}

/**
* 這里以此方法為服務器demo,僅作示例
* @return 返回服務器要推送的消息,否則如果為空的話,不推送
*/
public string getservermessage(){
return "yes!";
}
}


其中messageactivity是點擊跳轉的activity,負責處理查看詳細信息。
我們在其他activity中調用一下:
復制代碼 代碼如下:

boolean ismessagepush = true;//不開啟就設置為false;
...
if(ismessagepush){
startservice(new intent(this, messageservice.class))
};

運行一下:
4.停止服務
1 stopservice(new intent(myactivity.this,messageservice.class));
2 setmessagepush(false);//設置配置文件或數據庫中flag為false
運行一下,停止服務后,卻出乎意料的并沒有停下來,怎么回事?是不是代碼寫錯了?
代碼沒有錯,錯在我們停止了服務,卻沒有停止進程,退出線程。
5.退出線程
實踐證明,thread的stop()方法并不可靠。但是我們有其他的辦法。
在代碼面前,程序員就是上帝。
退出線程有兩種方法。
第一種方法,強制退出。
//殺死該線程所在的進程,自然就退出了
2 system.exit(0);
第二種方法,設置isrunning為false。
view sourceprint?1 //前面說到了isrunning這個標志,設置為false后,線程的執行就從while循環中跳出來了,然后自然結束
掉了
2 messagethread.isrunning = false;
綜合一下,我們在messageservice中重載ondestroy()方法如下:
復制代碼 代碼如下:

@override
public void ondestroy() {
system.exit(0);
//或者,二選一,推薦使用system.exit(0),這樣進程退出的更干凈
//messagethread.isrunning = false;
super.ondestroy();
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕网| 亚洲娇小xxxx欧美娇小| 日韩在线观看av| 久久精品99国产精品酒店日本| 久久久久九九九九| 亚洲free嫩bbb| 亚洲色图在线观看| 伊人伊成久久人综合网小说| 国产成+人+综合+亚洲欧美丁香花| 久久综合色88| 国产精品精品国产| 69av视频在线播放| 国产一区二区三区视频免费| 久久久精品视频成人| 久久久久久这里只有精品| 国产精品揄拍500视频| 中文字幕亚洲欧美| 欧美日韩成人免费| 欧美丰满少妇xxxxx做受| 欧美激情第1页| 精品久久久久久久久久久| 久久激情五月丁香伊人| 久久精品国产亚洲7777| 亚洲国产精品电影| 岛国视频午夜一区免费在线观看| 亚洲尤物视频网| 国产精品视频久| 亚洲三级 欧美三级| 精品国产一区二区三区久久狼黑人| 欧美亚洲日本黄色| 久久久www成人免费精品张筱雨| 欧美风情在线观看| 欧美大尺度激情区在线播放| 成人高清视频观看www| 久久精品久久久久电影| 欧美日韩国产专区| 久久伊人精品视频| 欧美精品一本久久男人的天堂| 午夜精品99久久免费| 亚洲黄色www| 免费99精品国产自在在线| 久久免费国产视频| 九九热在线精品视频| 亚洲成人三级在线| 亚洲精品久久久久| 国产精品成人aaaaa网站| 欧美日韩中文字幕在线视频| 性日韩欧美在线视频| 国产精品日韩久久久久| 97超级碰碰碰久久久| 国产成人免费av电影| 不卡中文字幕av| 日韩中文字幕视频在线观看| 成人性生交大片免费观看嘿嘿视频| 福利一区福利二区微拍刺激| 欧美成人一二三| 欧美在线免费观看| 一本色道久久88综合亚洲精品ⅰ| 国产做受69高潮| 国产欧美精品久久久| 精品人伦一区二区三区蜜桃免费| 日韩一区二区三区国产| 久久久成人的性感天堂| 亚洲黄色在线看| 欧美性猛交xxxx乱大交蜜桃| 伦伦影院午夜日韩欧美限制| 永久555www成人免费| 亚洲第一综合天堂另类专| 久久久免费av| 久久影视电视剧免费网站清宫辞电视| 亚洲美腿欧美激情另类| 日本一区二区不卡| 精品视频一区在线视频| 在线播放亚洲激情| 久久久久久69| 免费91在线视频| 欧美在线亚洲一区| 亚洲97在线观看| 亚洲欧美激情精品一区二区| 亚洲国产又黄又爽女人高潮的| 亚洲精品综合久久中文字幕| 色在人av网站天堂精品| 国产精品国产三级国产专播精品人| 日本一区二区在线免费播放| 日本人成精品视频在线| 中文字幕av一区中文字幕天堂| 国产91九色视频| 国产精品欧美在线| 亚洲女人被黑人巨大进入| 成人福利视频在线观看| 亚洲综合日韩中文字幕v在线| 欧美日韩福利在线观看| 国产精品黄色av| 91夜夜揉人人捏人人添红杏| 成人a级免费视频| 永久免费精品影视网站| 中文字幕成人精品久久不卡| 国产情人节一区| 精品中文字幕久久久久久| 97在线日本国产| 欧美日韩国产色视频| 日韩欧美在线视频日韩欧美在线视频| 国产成人精品综合久久久| 精品无人区乱码1区2区3区在线| 另类专区欧美制服同性| 国产精品久久久久久久久久三级| 国产区精品在线观看| 久久天天躁狠狠躁夜夜躁| 日韩电影在线观看永久视频免费网站| 5566日本婷婷色中文字幕97| 欧美福利在线观看| 欧美亚洲国产日本| 日韩视频免费大全中文字幕| 日本韩国在线不卡| 成人激情春色网| 91丨九色丨国产在线| 欧美wwwxxxx| 亚洲女成人图区| 久久天天躁狠狠躁夜夜躁2014| 欧美成人午夜激情视频| 久久影视电视剧免费网站清宫辞电视| 国产成人精品久久二区二区| 欧美午夜美女看片| 欧美黑人巨大xxx极品| 欧美精品成人91久久久久久久| 亚洲三级黄色在线观看| 精品视频偷偷看在线观看| 国产成人福利视频| 亚洲人成电影网站色…| 久久天天躁狠狠躁夜夜躁2014| 欧美一乱一性一交一视频| 亚洲欧美激情精品一区二区| 亚洲老板91色精品久久| 91午夜在线播放| 国产精品爽黄69| 久久频这里精品99香蕉| 国产精品旅馆在线| 久久精品国产亚洲精品| 国产精品欧美一区二区三区奶水| 国产精品老女人精品视频| 综合网日日天干夜夜久久| 国产精品视频999| 黑人巨大精品欧美一区二区| 久久亚洲精品小早川怜子66| 欧美大片在线看免费观看| 久久久噜噜噜久久久| 97涩涩爰在线观看亚洲| 亚洲品质视频自拍网| 亚洲成色999久久网站| 亚洲国产精品久久久久秋霞蜜臀| 最近2019年中文视频免费在线观看| 欧美日韩国产在线看| 91精品久久久久久久久久久久久久| 国产日韩视频在线观看| 日韩美女免费视频| 欧美性生活大片免费观看网址| 日韩高清a**址| 国产日韩综合一区二区性色av| 亚洲欧美激情四射在线日| 久久久国产影院| 欧美www视频在线观看| 精品国产一区二区三区久久狼黑人| 亚洲色图35p| 成人性生交大片免费看视频直播|