应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Service与Acitivity的两大功能是什么?你知道吗

  service与activity之前的通信方式有很多,回调接口方式、观察者模式、广播、还有handler等,方法有很多,但要高强度地通信,个人觉得还是用回调接口的方式比较妥当,用handler的话,如果涉及到service要向多个activity传送数据就变得麻烦了)。
  所以在这里记录下回调接口的方式进行通信:
  1、怎样在启动一个Service时向它传递数据关键点:Intent传值,onStartCommand()接收。
  2、怎样向运行的Service中同步数据关键点:通过onBind()获取Service实例,然后再调用Binder中的相关方法。
  3、怎样侦听Service中数据变化关键点:通过回调函数达到目的。
  一般来说:同一个包内的activity和service,如果service没有设定属性android:process:remote的话,service会和activity跑在同一个进程中,由于一个进程只有一个UI线程,所以,service和acitivity就是在同一个线程里面的
  android:process:remote值得注意他的用法!!!如果Activity想访问service中的对象或方法,service设定属性android:process:remote,那么就是跨进程访问,跨进程访问容易出现意想不到的问题,还是慎重给service设定属性android:process:remoteService的两大功能是什么?怎样实现?Service主要有两个作用:后台运行跨进程通讯情况1:
  当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现
  步骤如下:Service和Activity的连接;可以用ServiceConnection来实现,需要实现一个新的ServiceConnection,重写onServiceConnected和onServiceDisconnected方法执行绑定,调用bindService方法,传入一个选择了要绑定的Service的Intent(显式或隐式)和一个你实现了的ServiceConnection实例一旦连接建立,你就能通Service的接口onBind()得到serviceBinder实例进而得到Service的实例引用一旦Service对象找到,就能得到它的公共方法和属性;但这种方式,一定要在同一个进程和同一个Application里情况2:
  跨进程通讯,使用AIDL
  步骤如下:在Eclipse工程的package目录中;建立一个扩展名为aidl的文件;package目录就是Java类所在的目录;该文件的语法类似于Java代码。aidl文件中定义的是AIDL服务的接口;这个接口需要在调用AIDL服务的程序中访问如果aidl文件的内容是正确的,Eclipse插件会自动生成一个Java接口文件(。java)建立一个服务类(Service的子类)实现由aidl文件生成的Java接口在AndroidManifest。xml文件中配置AIDL服务,尤其要注意的是,标签的android:name属性值就是客户端要引用该服务的ID,也就是Intent类构造方法的参数值
  当acitivity和service处于同一个application和进程时,通过继承binder类来实现
  当一个activity绑定到一个service上时,它负责维护service实例的引用,允许你对正在运行的service进行一些方法调用;比如你后台有一个播放背景音乐的service,这时就可以用这种方式来进行通信
  代码如下:service代码publicclasslocalserviceextendsservice{privatefinalibinderbindernewlocalbinder();publicclasslocalbinderextendsbinder{localservicegetservice(){returnlocalservice。this;}}publicibinderonbind(intentintent){returnbinder;}}activity代码publicclassbindingactivityextendsactivity{localservicelocalservice;privateserviceconnectionmconnectionnewserviceconnection(){publicvoidonserviceconnected(componentnameclassname,ibinderlocalbinder){localservice(localbinder)localbinder。getservice();}publicvoidonservicedisconnected(componentnamearg0){localservicenull;}};protectedvoidonstart(){super。onstart();intentintentnewintent(this,localservice。class);bindservice(intent,mconnection,context。bindautocreate);}protectedvoidonstop(){super。onstop();unbindservice(mconnection);}publicvoidprintrandomnumber{intnumlocalservice。getrandomnumber();system。out。println(num);}}
  代码解释:
  使用使用context。bindservice()启动service会经历:context。bindservice()oncreate()onbind()servicerunningonunbind()ondestroy()servicestop
  该如何检验activity和service是否是在同一个进程中运行
  一般情况下,activity和service在同一个包名内,并且没有设定属性android:process:remote,两者在同一个进程中
  因为一个进程只有一个ui线程,所以两者就在同一个线程里
  如果设置android:process:remote,就属于跨进程访问,就属于不同的进程了
  验证方法:
  在activiyt和service的oncreate中打印进程的信息
  如:log。i(tag,thread。curentthread()。getid());
  前段时间也是收集整理了关于AndroidFramework底层开发技术知识点!并将之整合成了PDF文档;这份文档既能够夯实底层原理核心技术点,又能够掌握普通开发者,难以触及的架构设计方法论;有需要这份《AndroidFramework底层开发技术知识点文档》的朋友;可在评论区下方留言,或者私信发送进阶即可直达获取
  文档内容展示如下:1、HandlerHandler机制中,存在哪些角色?各自承担了什么功能?Handler分发事件优先级,是否可拦截?拦截的优先级如何?主线程Looper何时运行?Handler的Message可以分为那3类?分别有什么标识?Handler为什么需要使用底层的epoll来休眠?
  2、BinderBinder机制是如何跨进程的?Binder的定向制导,如何找到目标Binder,唤起进程或者线程?Binder一次拷贝原理?AndroidAPP进程天生支持Binder通信的原理是什么?使用Binder传输数据的最大限制是多少,被占满后会导致什么问题?
  3、AMSAMS是什么?什么时候初始化的?有什么作用?AMS和zygote进程通信是如何实现的?ActivityManager、ActivityManagerService、ActivityManagerNative、ActivityManagerProxy的关系Instrumentation是什么?和ActivityThread是什么关系?ActivityThread是什么?ApplicationThread是什么?它们的区别?
  4、PMSAndroidManifest。xml在解析的作用?InstallStart如何显示安装界面?sartnstal流程分析?pms提前缓存内存存档?四大组件如何预加载的?
  5、WMSView的绘制流程?onMeasure职责是做什么?Activity如何与window与view进行分工合作的?onResume函数中度量高有效吗?线程中view。setText一定会报错吗,为什么?View的绘制过程都是用的同一个canvas吗?
  文中所有资料都是免费分享给大家的;有需要这份《AndroidFramework底层开发技术知识点文档》的朋友;可在评论区下方留言,或者私信发送进阶即可直达获取
  资料很珍贵,希望帮到需要的人;感谢就不必要了,多多点赞关注,是我最大的动力!

一套完美的解决方案我曾经关心过这样一个问题。有没有一种完美的思想,指导构建一个完美的社会制度,这个制度之下,能够实现人人永远幸福快乐。我看到有人说,某种思想集人类一切先进之大成,能够……官宣!篮网更新伤情报告,2人因伤缺席,三巨头首秀对战哈登北京时间10月3日,NBA季前赛继续展开,篮网和76人的首秀将在4日打响,两支球队的对话也吸引了很多看点。在今天,篮网方面也是更新了伤情报告,其中有2名球员将因伤缺席比赛,三巨……广东人的夜宵,就好这一口广东人爱食粥是出了名的。作为资深的美食哲学家,我们总能把粥做出各式花样。一煲看似平平无奇的粥,实则从选米、选辅料,到用锅、调味、火候,甚至是吃法都有讲究。今天导报君……12GB512GBIP68,从6799元跌至3999元,荣耀如今荣耀已经恢复了元气,新品也是一个接一个发布,X系列主打中低端市场,数字系列主打中端市场,Magic系列则负责高端市场。还记得去年8月份荣耀Magic3Pro发布时,起……10年后,现在200万的房子还能值多少钱?孙宏斌和王健林观点房子会一致增值吗?可能在2020年以前,很多人还会这么想。但是从2020年下半年开始,很多人似乎才猛然回过神,啊,原来房价也会降,我买的房子也是会贬值的。现在的楼市调控就……S12世界赛LPL四支队伍排名大家好,我是英雄联盟资讯官。S12入围赛9月30日正式开打,最近国服也是更新到了12。18的同世界赛版本,随着版本的更新改动,S12大概率又回到了上中野版本,这对TES和EDG……从维密毕业的超模们,人生过得怎么样?欧美娱乐圈最近可太热闹了,看下来,几乎所有的娱乐八卦都围着同一群人打转:维密超模。吉赛尔邦辰被爆丧偶式育儿离家出走、,小南瓜贝哈提普林斯路被Maroon5主唱亚当莱文劈腿,27……英媒曼城续约福登达协议,双方续约6年周薪涨至25万英镑左右直播吧9月26日讯据知情人向FootballInsider透露,曼城已与福登达成续约协议。消息称,22岁的福登将在续约后拿到数倍于目前的工资,届时他的周薪将接近25万英镑……像玩积木一样玩转化学!2022年诺贝尔化学奖解读科技日报记者刘霞当地时间10月5日,瑞典皇家科学院宣布,美国科学家卡罗琳贝尔托西、丹麦科学家摩顿P梅尔达尔、美国科学家卡尔巴里夏普利斯荣膺2022年诺贝尔化学奖,以表彰他……新规将出!美芯巨头先尝苦果,中国芯却逆势突围芯片产业发展了几十年,已经是一个全球性的产业链,需要全球各地分工协作,才能共同实现更好的发展。我们一向重视与各地的合作,也是产业链的重要组成部分。然而,美方却把他们在芯片……闲聊读书慢节奏的生活读书写字种花草,观云听雨品酒茶。积累时光,沉淀感情。时间告诉我们,简单的喜欢,最长远,平凡的陪伴,最心安。对于时间就如同一列飞驰的火车,错过了就不会再来。打磨时光,……欧冠杯资讯利物浦VS流浪者推荐随之哑火欧冠杯资讯:利物浦VS流浪者推荐随之哑火队伍:利物浦VS流浪者时间:10月05日03:00比赛类型:欧冠杯周三凌晨,LDSPORTS分析欧冠联分组赛A组……
一个人,究竟是富贵命,还是劳碌命,取决于50岁前后几年头条创作挑战赛01hr孔子有言:四十而不惑,五十而知天命。一个人,唯有到了40岁之后才不会迷惑,也只有到了50岁之后才能知晓自己的天命。其实,无论是不惑也好,还是知……心好命才好,心好人长寿春风得意马蹄疾,一日看尽洛阳花。人逢喜事精神爽。福无双至今日至,祸不单行昨夜行。福至心灵。人的寿命与岁月相辅相成,紧紧相依。心好命才好,心好人长寿。每个人的生……饭前中后肚子疼,消化科医生对应5种不同的病肚子疼是生活中很常见的一种不适症状,它的发生往往与进食有关,有人是饿肚子时疼得厉害,有人是吃完饭更严重。其实,不同的疼痛时间可能预示着不同的疾病。腹痛要分清餐前饭后……缘来是你一朵花开,一生,只谢一次,只结一果;一方姻缘,一世,只求一心,只许一人。然,前世的姻,还需百年修行方可同舟渡,而,今生的缘,却要万劫轮回才得共枕眠。缘来如此,再入红尘,敢问,今……华为麒麟被打压后,紫光展锐能否杀出一片天?现在国内做手机芯片的厂商,真的没多少。在华为麒麟被打压后,剩下能搞5G芯片的,就是紫光展锐了。甚至有人对紫光展锐寄予厚望,希望它能达到海思的高度。不过吼,紫光……后悔么?首钢弃将268打懵旧主,2米20高塔怒砍2分,解立彬10082,首钢男篮在和山西队的交战当中以18分的优势笑到最后,从而避免了两连败的发生。上一场和山东队的热身赛,首钢队在第四节忽然哑火,被山东队完成了16分的大逆转。本场比赛首……国产CPU境况如果我们抵制英特尔,究竟哪家能够顶上来?去年年底Intel公司因为其涉疆言论惹怒了中国网民,这已经不是Intel第一次触怒中国用户了,早在2020年Intel就因为某个敏感问题试探过以此中国用户的底线了。事件发……CBA今日赛事难兄难弟津沪战,势均力敌青川斗,改写历史鲁粤战CBA今天将进行第四轮最后三场比赛的争夺,分别是天津先行者对阵上海大鲨鱼,四川蓝鲸对阵青岛雄鹰,山东麒麟对阵广东华南虎。下午15点首先出战的是天津先行者和上海大鲨鱼的比赛……76149!感谢杜兰特,感谢欧文,你们逼出了一个NBA奇迹北京时间2022年10月25日,今日NBA比赛,灰熊主场迎战篮网,篮网此前面对灰熊6连败,今日他们能否终结尴尬呢?灰熊首发:莫兰特贝恩狄龙阿尔达马亚当斯,篮网首发:西蒙斯欧文杜……上海大手笔,签下两名前NBA球员,不如签下安东尼和霍华德又是大手笔,裁掉非保障性合同的比斯利后,上海队签下两名外援!上海目前以1胜5负战绩,排名联赛倒数第二,迫在眉睫的形势只能求变。根据CBA规定的外援政策,目前还是无限更换次……秋的清晨秋的清晨(外一首)作者:王晋生诵读:黎敏秋的清晨风,淡淡的丝丝清凉云,薄薄的如烟似纱探出头,朝阳羞涩张望他轻轻游离云海在摇曳的枝头熏染……青海的秋是一首静美而又绚烂的诗篇树树皆秋色,山山唯落晖夏去秋来,四季更替风吹过,秋叶纷纷这是秋天的魅力渲染着整个大地有人说秋天的美是成熟的它不像春那么羞涩夏那么……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网