Service 的两种开启方式

第一种: 开启完服务之后, 就跟服务没关系了. 不管服务的死活了.

startService 开启服务, 生命周期显示: onCreate -> onStartCommand 服务正在运行了.
当服务已经在后台运行, 无论调用多少次startService都不会重新创建服务, 而是调用onStartCommand

stopService 停止服务, 当服务正在后台运行, stopService会把服务关掉, 生命周期: onDestory

注 : 这种方式开启服务, 不可以调用服务中的方法.

第二种: 可以调用服务中的方法, 当前的activity开启的service, 它俩的关系是, 不求同时生, 但求同时挂.

bindService 绑定服务 , 生命周期: onCreate -> onBind 服务正在运行了.

unbindService 解绑服务. 生命周期: onUnbind -> onDestory 服务被销毁了.

调用服务中的方法:

1. 调用bindService方法, 绑定服务. 同时传递过去一个ServiceConnection连接桥. 并实现其中两个方法onServiceConnected.

2. 自定义一个实现IBinder对象或者继承Binder类, 在onBind方法中返回这个对象.

3. ServiceConnection连接桥中的onServiceConnected方法会被调用, 其中有个对象IBinder service, 就是服务返回来的对象

4. 在自定义的类中写个方法, 转调服务中的方法.

5. 在activity中拿着服务连接桥返回过来的对象, 调用服务中的方法.

远程服务调用:
IPC: intel-process communication 因特尔进程间通信.
AIDL android interface dinfiend language 安卓接口声明语言. 不允许接收修饰词.

Binder类是实现了IBInder接口的类.

1. 在远程服务的应用程序中定义一个接口类, 把修饰词去掉. 把后缀名改成aidl

2. 如果没有错误, 会在我们的Gen目录下生成一个文件接口名.java

3. 在我们的服务中创建一个内部类, 继承gen目录下生成的接口文件中的Stub类.

4. 在Stub实现类中写一个方法, 用于转调服务中的买票方法.            

5. 在清单文件中service的节点下加隐式跳转的action参数. 用于让远程服务调用我们.        ---------------服务端基本完成.

6. 在另一个应用程序中调用bindService方法绑定服务. 并且传递过去一个ServiceConnection连接桥.

7. 把远程服务中的aidl文件拷贝到我们应用程序中. 新建一个和aidl包名一样的包, 放进去. 这时候gen目录下会生成对应的接口名.java的文件.

8. 在ServiceConnection连接桥的onServiceConnected方法中, 把服务返回过来的IBinder对象转换成IRemoteService对象.
    IRemoteService iRemoteService = Stub.asInterface(service);

9. 拿着获取的    iRemoteService  对象调用服务中的方法.

混合开启服务方式: 开启一次服务, 服务就一直在后台运行. 别人过来绑定就可以随便使用, 解绑之后也不会把服务关闭掉.

startService 服务在后台运行

捕鱼达人: 绑定, 付钱, 解绑
植物大战僵尸: 绑定, 付钱, 解绑
找你妹: 绑定, 付钱, 解绑
.......

在工作中, 如果写一个服务, 需要被别人调用, 并且还需要长期在后台运行. 就采用混合开启服务的方式运行服务.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 【Android Service】 Service 简介(★★★) 很多情况下,一些与用户很少需要产生交互的应用程...
    Rtia阅读 3,134评论 1 21
  • 上篇我们讲解了Android中的5中等级的进程,分别是:前台进程、可见进程、服务进程、后台进程、空进程。系统会按照...
    徐爱卿阅读 3,834评论 6 33
  • 1. 相约是件很微妙的事,当一切都充满期待和盛情的时候,心间仿佛开出了诱人的花朵,你避不开它的沁香和艳丽! 莲花路...
    生命里的小小黑阅读 339评论 0 1
  • 我曾经看到过一匹狼,被山猫咬得重伤之后,竟跃入一个沼泽中去。那时我还以为它是在找自己的坟墓,谁知它在那沼泽中躺了两...
    少叔夜阅读 1,083评论 0 2
  • 有时候 我想象自己是一片云 一生不过晴天与雨天 来于尘土 归于尘土
    0590008d9370阅读 96评论 0 0