亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android頂欄定時推送消息

 更新時間:2016年04月07日 11:23:58   作者:小寶  
在用安卓設備時,經(jīng)常會應用到彈出推送消息。接下來通過本文給大家介紹Android頂欄定時推送消息,感興趣的朋友一起學習吧

在用安卓設備時,經(jīng)常會應用到彈出推送消息。下面在此把我之前寫的推送代碼分享給大家,供大家參考,有不同見解的朋友歡迎提出,共同學習進步!

最近搜索看這個的朋友比較多。這個也只是單獨的內(nèi)置推送。時時推送與服務器關聯(lián) 我們可以用SDK云推送來實現(xiàn)我們所需的需求。相關介紹內(nèi)容。往下移!

首先XML

<!-- 安卓推送服務 -->
<service android:name=".MessageService"
android:enabled="true"
android:exported="true"
android:label="PushService"
android:launchMode="singleInstance"
android:persistent="true"
android:process=":push" >
<intent-filter>
<action android:name="com.xxxx.action.MY_SERVICE" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</service>
<receiver
android:name="com.tt.xxxxx.download.GTAlarmReceiver"
android:permission="com.android.launcher.permission.INSTALL_SHORTCUT"
android:enabled="true"
android:exported="true"
>
<intent-filter>
<action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
</intent-filter>
</receiver>
<!--end add-->

里面的. :。這些符號很坑爹。不懂的可以查下字段屬性說明。

推送類:

/******************************** 類 *************************************/
package com.ttad.yxcb;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import com.tt.yingxiongchibis.download.GTDownloaderActivity;
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 void onCreate() {
//初始化
messageNotification = new Notification();
messageNotification.icon = R.drawable.app_icon_ucs;
messageNotification.tickerText = "알림";
messageNotification.defaults = Notification.DEFAULT_SOUND;
messageNotificatioManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//點擊跳轉的activity
messageIntent = new Intent(this, GTDownloaderActivity.class);
messagePendingIntent = PendingIntent.getActivity(this,0,messageIntent,0);
//開啟線程
messageThread = new MessageThread();
messageThread.isRunning = true;
messageThread.start();
//Toast.makeText(MessageService.this, "", Toast.LENGTH_LONG).show();
super.onCreate();
}
/**
* 從服務器端獲取消息
*
*/
class MessageThread extends Thread{
//運行狀態(tài),下一步驟有大用
public boolean isRunning = true;
public void run() {
while(isRunning){
try {
//休息10分鐘
Thread.sleep(1000);
//獲取服務器消息
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();
}
}
}
}
@Override
public void onDestroy() {
// System.exit(0);
//或者,二選一,推薦使用System.exit(0),這樣進程退出的更干凈
messageThread.isRunning = false;
//super.onDestroy();
}
/**
* 這里以此方法為服務器Demo,僅作示例
* @return 返回服務器要推送的消息,否則如果為空的話,不推送
*/
public String getServerMessage(){
SimpleDateFormat sdf=new SimpleDateFormat("HHmmss");
String date=sdf.format(new java.util.Date());
String in = date;
if(date.equals("195500"))
{
String str = "잠시후 전쟁터 시작됩니다. 준비해주세요.";
return str;
}
else if(date.equals("212500"))
{
String str = "잠시후 보스전 시작됩니다. 준비해주세요.";
return str;
}
else
{
return "";
}
}
}

最后,調(diào)用方式:

//推送
Intent intent = new Intent();
// 設置Action屬性
intent.setAction("com.ttad.yxcb.action.MY_SERVICE");
// 啟動該Service
startService(intent);
// startService(new Intent(ExTextActivity.this, MessageService.class));

Android消息推送知識補充:

1.引言

  所謂的消息推送就是從服務器端向移動終端發(fā)送連接,傳輸一定的信息。比如一些新聞客戶端,每隔一段時間收到一條或者多條通知,這就是從服務器端傳來的推送消息;還比如常用的一些IM軟件如微信、GTalk等,都具有服務器推送功能。

  推送方法如下:

  1)通過SMS進行服務器端和客戶端的交流通信。

  在Android平臺上,你可以通過攔截SMS消息并且解析消息內(nèi)容來了解服務器的意圖,可以實現(xiàn)完全的實時操作。但是問題是這個方案的成本相對比較高,且依賴于運營商。

  2)循環(huán)主動定時獲取

  這種方法需要客戶端來做一個定時或者周期性的訪問服務器端接口,以獲得最新的消息。輪詢的頻率太慢可能導致某些消息的延遲,太快則會大量消耗網(wǎng)絡帶寬和電池。

  3)持久連接

  這個方案可以解決由輪詢帶來的性能問題,但是還是會消耗手機的電池。我們需要開一個服務來保持和服務器端的持久連接(蘋果就和谷歌的C2DM是這種機制)。但是對于Android系統(tǒng),當系統(tǒng)可用資源較低,系統(tǒng)會強制關閉我們的服務或者是應用,這種情況下連接會強制中斷。(Apple的推送服務之所以工作的很好,是因為每一臺手機僅僅保持一個與服務器之間的連接,事實上C2DM也是這么工作的。即所有的推送服務都是經(jīng)由一個代理服務器完成的,這種情況下只需要和一臺服務器保持持久連接即可。C2DM=Cloud to Device Messaging)。

  相比之下第三種還是最可行的。為軟件編寫系統(tǒng)服務或開機啟動功能;或者如果系統(tǒng)資源較低,服務被關閉后可以在onDestroy ()方法里面再重啟該服務,進而實現(xiàn)持久連接的方式。

  C2DM內(nèi)置于Android的2.2系統(tǒng)上,無法兼容老的1.6到2.1系統(tǒng);且依賴于Google官方提供的C2DM服務器,由于國內(nèi)的網(wǎng)絡環(huán)境,這個服務經(jīng)常不可用。

  建立在TCP協(xié)議之上的XMPP協(xié)議,不僅可提供可這種持久連接的功能,能實現(xiàn)服務器和客戶機的雙工通信,還能不依賴與系統(tǒng)版本和google服務器的限制,提供了比較好的解決方案。

2. XMPP協(xié)議

  XMPP全稱Extensible Messaging and Presence Protocol,前身是Jabber項目,是一種以XML為基礎的開放式即時通訊協(xié)議。XMPP因為被Google Talk和網(wǎng)易泡泡應用而被廣大網(wǎng)民所接觸。XMPP的關鍵特色是,分散式的即時通訊系統(tǒng),以及使用XML串流。XMPP目前被IETF國際標準組織完成了標準化工作。

  Android push notification(androidpn) 是一個基于XMPP協(xié)議的java開源實現(xiàn),它包含了完整的客戶端和服務器端。該服務器端基本是在另外一個開源工程openfire基礎上修改實現(xiàn)的。

  androidpn客戶端需要用到一個基于java的開源XMPP協(xié)議包asmack,這個包同樣也是基于openfire下的另外一個開源項目smack,不過我們不需要自己編譯,可以直接把androidpn客戶端里面的asmack.jar拿來使用??蛻舳死胊smack中提供的XMPPConnection類與服務器建立持久連接,并通過該連接進行用戶注冊和登錄認證,同樣也是通過這條連接,接收服務器發(fā)送的通知。

  androidpn服務器端也是java語言實現(xiàn)的,基于openfire開源工程,不過它的Web部分采用的是spring框架,這一點與openfire是不同的。Androidpn服務器包含兩個部分,一個是偵聽在5222端口上的XMPP服務,負責與客戶端的XMPPConnection類進行通信,作用是用戶注冊和身份認證,并發(fā)送推送通知消息。另外一部分是Web服務器,采用一個輕量級的HTTP服務器,負責接收用戶的Web請求。服務器的這兩方式,意義非凡:當相應的TCP端口被防火墻封閉,可以使用輪詢的方式進行訪問,因此又有助于通過防火墻。

相關文章

  • Android實現(xiàn)添加商品到購物車動畫效果

    Android實現(xiàn)添加商品到購物車動畫效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)添加商品到購物車的動畫效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android模仿知乎的回答詳情頁的動畫效果

    Android模仿知乎的回答詳情頁的動畫效果

    這篇文章主要介紹了Android模仿“知乎”的回答詳情頁的動畫效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android下拉刷新與輪播圖滑動沖突解決方案

    Android下拉刷新與輪播圖滑動沖突解決方案

    這篇文章主要介紹了Android實現(xiàn)下拉刷新與輪播圖沖突解決方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下。隨小編過來看看吧
    2017-02-02
  • 安卓(Android)開發(fā)之分享帶文字的圖片

    安卓(Android)開發(fā)之分享帶文字的圖片

    用過微信分享SDK的都應該知道,微信分享到朋友圈的時候是不能同時分享圖片和文字的,只要有縮略圖,那么文字就不會生效。那么問題就來了,如果我們想把APP內(nèi)的某些內(nèi)容連帶圖片一起分享到微信,是不是沒辦法了呢?下面一起來看看怎么解決。
    2016-08-08
  • Android 通過TCP協(xié)議上傳指定目錄文件的方法

    Android 通過TCP協(xié)議上傳指定目錄文件的方法

    這篇文章主要介紹了Android 通過TCP協(xié)議上傳指定目錄文件的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Android json解析及簡單例子

    Android json解析及簡單例子

    這篇文章主要為大家詳細介紹了Android json解析及簡單例子,具有一定的參考價值,感興趣的朋友可以參考一下
    2016-06-06
  • Android?Compose之Animatable動畫停止使用詳解

    Android?Compose之Animatable動畫停止使用詳解

    這篇文章主要為大家介紹了Android?Compose之Animatable動畫停止使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android中將Bitmap對象以PNG格式保存在內(nèi)部存儲中的方法

    Android中將Bitmap對象以PNG格式保存在內(nèi)部存儲中的方法

    在Android中進行圖像處理的任務時,有時我們希望將處理后的結果以圖像文件的格式保存在內(nèi)部存儲空間中,本文以此為目的,介紹將Bitmap對象的數(shù)據(jù)以PNG格式保存下來的方法
    2017-08-08
  • Android PowerManagerService省電模式策略控制

    Android PowerManagerService省電模式策略控制

    這篇文章主要介紹了Android PowerManagerService省電模式策略控制,本文基于前兩篇文章的基礎介紹展開詳情,感興趣的小伙伴可以參考一下
    2022-08-08
  • Android編程下拉菜單spinner用法小結(附2則示例)

    Android編程下拉菜單spinner用法小結(附2則示例)

    這篇文章主要介紹了Android編程下拉菜單spinner用法,結合實例較為詳細的總結分析了下拉菜單Spinner的具體實現(xiàn)步驟與相關技巧,并附帶兩個示例分析其具體用法,需要的朋友可以參考下
    2015-12-12

最新評論