Android开发Android开发经验谈Android技术知识

Android Service调用流程解析

2019-11-06  本文已影响0人  酱爆大头菜

Service是面试中经常问到的一个模块,从之前的简单使用,到后期的应用保活,当然现在Android系统对这种保活机制进行了优化和限制,我们先简单了解下Service的特性。

接下来的文章主要以一问一答的方式进行介绍Service的特性,必要部分也会分析到Service的源码逻辑

首先啥是Service?
Service启动方式有几种?
startService和bindService启动服务有什么区别?
多次调用startService或者bindService会重复执行生命周期么?
Service 怎么和Activity进行通信?
为什么bindService可以跟Activity生命周期联动?
H->handleMessage()
    handleBindService()
          IBinder binder = mServices.get(data.token).onBind();
          // ActivityManager.getService()得到的是一个ActivityManagerService对象。
          ActivityManager.getService().publishService(,, binder);
           //ActivityManagerService对象是在系统进程中,所以当前线程会挂起,启用系统进程调用publishServiceLocked()
              ActiveServices.publishServiceLocked(,, binder);
                //c.conn.connected又从系统的服务进程回到了应用进程,connected方法就是LoadApk的内部类InnerConnection.connected()方法.
                  c.conn.connected(r.name, binder, false); 
                      LoadedApk.ServiceDispatcher.connected(, binder, );
                          LoadedApk.ServiceDispatcher.doConnected(, binder, );
                              ServiceConnection.onServiceDisconnected();
                              ServiceConnection.onServiceConnected();
注:
上一篇下一篇

猜你喜欢

热点阅读