android 获取服务对象,android 如何取得正在运行的service对象

在写有关推送的代码,用的长连接的方式。

具体逻辑:登录时 启service,service中启一个线程,线程中构建一个CommunicateManegr对象,此对象里面有一个BlockingDeque双端队列处理包的顺序问题, 还有若干线程分别处理心跳包、登录包、推送消息、其它业务消息、断线重连、心跳检测等操作。

初次运行程序,长连接建立起来;然后退出系统,为了保持长连接,后台服务仍运行。再次运行程序时,需要判断后台服务是否仍在运行,仍在运行的话,需要取出之前运行的service对象,添加一些登录包。

这里的取出之前运行的service对象,如何取出?

不局限与取出之前运行的service对象的问题,是否从一开始 我关于长连接的处理逻辑就有一些理解不当的地方?

伪代码:

class MyService extends Service{

public CommnicateManager cManager;

@Override

public void onCreate() {

new Thread(new Runnable() {

@Override

public void run() {

CommunicateManager manager = CommunicateManager.getInstance();

cManager = manager;

manager.connect();

manager.add(LoginPackage);//添加登录包

manager.add(registerPackage);//添加注册包

manager.startHeardBeatThread();//开启心跳线程

manager.startCommunicate();//开启其它线程

}

}.start();

}

}

public class LoginActivtiy extends BaseActivity implements OnClickListener {

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.login:

if (isServiceWork(LoginActivtiy.this,"com.example.service")){//判断第一次运行的服务是否存在

//TODO: 需要得到第一次运行的服务对象service 如何得到??? manager.add(loginPackage)

}else{

startService(myService);

}

break;

default:

break;

}

}

//判断某个服务是否正在运行的方法

public boolean isServiceWork(Context mContext, String serviceName) {

boolean isWork = false;

ActivityManager myAM = (ActivityManager) mContext

.getSystemService(Context.ACTIVITY_SERVICE);

List myList = myAM.getRunningServices(200);

// List apps = myAM.getRunningAppProcesses();

if (myList.size() <= 0) {

return false;

}

for (int i = 0; i < myList.size(); i++) {

String mName = myList.get(i).service.getClassName().toString();

if (mName.equals(serviceName)) {

isWork = true;

break;

}

}

return isWork;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[你必须知道的.NET]第十五回:继承本质论

本文将介绍以下内容&#xff1a; 什么是继承&#xff1f;继承的实现本质1. 引言 关于继承&#xff0c;你是否驾熟就轻&#xff0c;关于继承&#xff0c;你是否了如指掌。 本文不讨论继承的基本概念&#xff0c;我们回归本质&#xff0c;从编译器运行的角度来揭示.NET继承中的…

海岸鸿蒙2018年标准物质,海岸鸿蒙——20年权威的标准物质研制单位

摘要&#xff1a;海岸鸿蒙创办于1996年&#xff0c;是专业从事国家标准物质研发、生产、销售的高新技术企业。海岸鸿蒙创办于1996年&#xff0c;是专业从事国家标准物质研发、生产、销售的高新技术企业。海岸鸿蒙自创办以来&#xff0c;一直秉持“以市场为导向&#xff0c;以科…

[你必须知道的.NET]第十六回:深入浅出关键字---using全接触

本文将介绍以下内容&#xff1a; using指令的多种用法using语句在Dispose模式中的应用1. 引言 在.NET大家庭中&#xff0c;有不少的关键字承担了多种角色&#xff0c;例如new关键字就身兼数职&#xff0c;除了能够创建对象&#xff0c;在继承体系中隐藏基类成员&#xff0c;还在…

华为双系统是鸿蒙系统吗,华为p50pro是鸿蒙系统吗-华为p50pro有双系统吗

华为p50pro的外观基本上就是延续了上一代的风格&#xff0c;没有什么太大的变化&#xff0c;不过影像能力还是非常令人期待的&#xff0c;下面一起来了解华为p50pro的系统方面&#xff0c;看看有没有你暂所不知的消息。近日&#xff0c;有消息曝光了华为 P50 Pro将会有 Harmony…

[你必须知道的.NET]第十七回:貌合神离:覆写和重载

本文将介绍以下内容&#xff1a; 什么是覆写&#xff0c;什么是重载覆写与重载的区别覆写与重载在多态特性中的应用1. 引言 覆写&#xff08;override&#xff09;与重载&#xff08;overload&#xff09;&#xff0c;是成就.NET面向对象多态特性的基本技术之一&#xff0c;两…

鸿蒙系统正式开源,余承东:鸿蒙系统正式开源,友商也可以使用!

鸿蒙OS2.0正式开源&#xff1a;从PPT走向前台&#xff0c;该谁脸红了&#xff1f;在9月10日的开发者大会上&#xff0c;华为鸿蒙2.0发布&#xff0c;已经不再是某些人嘴中的PPT、又哄又蒙的鸿蒙了。说鸿蒙是PPT的言论&#xff0c;在前不久还能看到&#xff0c;如今鸿蒙已经发布…

[你必须知道的.NET]第十八回:对象创建始末(上)

本文将介绍以下内容&#xff1a; 对象的创建过程内存分配分析内存布局研究1. 引言 了解.NET的内存管理机制&#xff0c;首先应该从内存分配开始&#xff0c;也就是对象的创建环节。对象的创建&#xff0c;是个复杂的过程&#xff0c;主要包括内存分配和初始化两个环节。例如&…

viper4android fxifi,ViPer4android. FX顶级音效!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼名称&#xff1a;OPPO X903 杜比音效脉冲反馈样本 For VIPER4Android FX v2.0样本数量&#xff1a;72适配V4A版本&#xff1a;ViPER4Android FX v2.2.0.1 或更高适用范围&#xff1a;耳机内放制作者&#xff1a;漫游因特网授权&…

[你必须知道的.NET]第十九回:对象创建始末(下)

本文将介绍以下内容&#xff1a; 对象的创建过程内存分配分析内存布局研究接上回[第十八回&#xff1a;对象创建始末&#xff08;上&#xff09;]&#xff0c;继续对对象创建话题的讨论>>> 2.2 托管堆的内存分配机制 引用类型的实例分配于托管堆上&#xff0c;而线…

android material 颜色值,Android Material Colors 谷歌 Material Design 标准颜色

Android Material Colors谷歌 Material Design 标准颜色。调色板资源文件通过 doc-getter 自动抓取生成。运行 Demo 来查看效果。UsageGradlecompile com.takwolf.android.materialdesign:color:0.0.1Stylecolor/material_indigo_500color/material_indigo_700color/material_p…

突然吐字不清_要注意说话吐字不清小心是脑中风前兆

任何疾病发病之前往往会有一些前兆出现&#xff0c;像是脑中风这种疾病在发作之前也是有前兆的&#xff0c;若是朋友们能够尽早的发现就能够在发病前进行治疗了。朋友们要注意的是说话吐字不清小心是脑中风前兆&#xff0c;这是脑中风发病前的典型前兆&#xff0c;还有头晕、呕…

[你必须知道的.NET]第二十回:学习方法论

本文&#xff0c;源自我回答刚毕业朋友关于.NET学习疑惑的回复邮件。 本文&#xff0c;其实早计划在《你必须知道的.NET》写作之初的后记部分&#xff0c;但是因为个中原因未能如愿&#xff0c;算是补上本书的遗憾之一。 本文&#xff0c;作为[《你必须知道的.NET》]系列的第20…

c++ vs release没有exe_未来安全 | 第一次Geant4培训总结 | 有没有你关注的问题呢?...

Geant4简介Geant4是蒙卡工具包&#xff0c;模拟很多粒子&#xff0c;记录一些统计量&#xff0c;用这些统计量去估计真实的物理实验的结果。蒙卡模拟程序&#xff0c;从最老的MCNP&#xff0c;到PENELOPE&#xff0c;FLUKA等。MCNP是用输入卡片(输入文件)实现的&#xff0c;在一…

[你必须知道的.NET]第二十一回:认识全面的null

说在&#xff0c;开篇之前 null、nullable、??运算符、null object模式&#xff0c;这些闪亮的概念在你眼前晃动&#xff0c;我们有理由相信“存在即合理”&#xff0c;事实上&#xff0c;null不光合理&#xff0c;而且重要。本文&#xff0c;从null的基本认知开始&#xff0…

html用表格做个人主页页面,利用HTML的表格进行页面布局

在DIVCSS布局出现前&#xff0c;基本上所用的网站都使用table来进行布局。因为table布局很简单&#xff0c;但是table布局不灵活且代码很多。下面将介绍怎样使用table来进行布局。实例&#xff1a;我们来布局一个常见网站后台程序的架构。布局图如下所示&#xff1a;实例代码&a…

cesium坡度坡向分析_景观设计分析图制作技巧到底是什么?

国外设计中&#xff0c;人们都开始用动态分析图啦厉害的不要不要啊&#xff01;如果你也想做如此高逼格的分析图记得往下看&#xff01;景观设计分析为&#xff1a;人文&#xff0c;背景&#xff0c;区位&#xff0c;现状&#xff0c;历史&#xff0c;功能&#xff0c;流线&…

采购模板html5,蓝色的采购信息管理系统手机界面wap模板

手机版大气信息管理系统界面模板&#xff0c;采购信息管理wap手机模板下载。资源下载此资源下载价格为4D币&#xff0c;请先登录资源文件列表codedown123-080801-25/business_log.html , 6657codedown123-080801-25/choose.html , 6869codedown123-080801-25/css/animate.css ,…

使用Linq时出现Row not found or changed. Linq 找不到行或行已更改的解决办法

在使用Linq的时候经常出现在了这样的一个错误 Row not found or changed. 找不到行或行已更改 解决方案。 首要的解决方案是&#xff0c;检查数据库字段定义&#xff0c;是否有不一致的地方&#xff0c;尤其是 该字段是否可空 Nullable 第一个简单的方案就是 打开dbml (linq)文…

adobe audition cs6 能打开mpcm文件吗?_Adobe全家桶出现这些漏洞,赶紧上官网下载补丁吧...

导语&#xff1a;Adobe已发布了计划的2020年7月安全更新&#xff0c;涵盖了五个不同产品领域的缺陷&#xff1a;Creative Cloud Desktop&#xff1b;媒体编码器&#xff1b;下载管理器; 真正的服务&#xff1b;和ColdFusion。其中四个错误的严重性被评为严重&#xff0c;而其他…

利用计算机可以对物体的运动情况,2018-2019学年高中物理第05章曲线运动专题5.3实验:研究平抛运动情景分组训练新人教版必修2.docx...

PAGEPAGE #专题5.3实验&#xff1a;研究平抛运动【本节知识清单】描绘平抛运动轨迹的方法可以通过 、、等等办法&#xff0c;也可以通过传感器利用计算机方便描出平抛物体的运动轨迹。在描迹法研究平抛运动实验中&#xff0c;是利用有孔的卡片确定做平抛运动的小球在运动中若干…