[精品]Android中利用App实现消息推送机制的代码-
Android中利用App实现消息推送机制的代码
Android中利用App实现消息推送机制的代码
作者: 字体:[增加 减小] 类型:转载
Android中利用App实现消息推送机制的代码,需要的朋友可以参考下。
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" /; 我们没必要建立一个全局的,本文选择第二种
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,创建
一个当前应用私有的独立进程。 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(); }
您可能感兴趣的文章:Android开发中避免应用无响应的方法(Application Not Responding、
ANR)一看就懂的Android APP开发入门教程Android 避免APP启动闪黑屏的解决办法(Theme
和Style)Android获取应用程序名称(ApplicationName)示例Android学习笔记(一)环境安
装及第一个hello worldAndroid开发笔记之:Handler Runnable与Thread的区别详解
Android开发笔记 改变字体颜色的三种方法Android学习笔记(二)App工程文件分析
QQ空间
新浪微博
腾讯微博
搜狐微博
人人网
开心网
百度搜藏
更多
12
Tags:Android 消息推送
复制链接收藏本文打印本文关闭本文返回
上一篇:android操作SQLite增删改减实现代码下一篇:安卓(Android)中如何实现滑动导航
相关文章
2014-01-01自己实现的android树控件treeview2014-02-02android配合viewpager实现可滑动的标签栏示例分享2014-03-03android开发教程之wifi开发示例2013-11-11android
Handler详细使用方法实例2013-01-01android 下载时文件名是中文和空格会报错解决方案2014-05-05android图片转换器示例2013-04-04Android Handler主线程和一般线程通信的应用分析2014-01-01详细介绍Android中回调函数机制2012-12-12Android中库项目的使用方法图文介绍2013-04-04基于android示例程序(bitmapfun) 高效加载图片让人无语地方