Android中Service启动过程及绑定过程

2020-04-03  本文已影响0人  MadnessXiong

先了解以下2篇,可以对Service的启动过程有更好的理解
Android应用程序进程启动过程
Binder深入理解及与AIDL的使用和理解

Service启动过程

1. 先看一下startService()的使用示例

生命周期:onCreate()->onStartCommand()->onDestory()。多次调用startService()时onCreate()只会执行一次,但是onStartCommand()会多次执行。多次调用stopService(),onDestory()只会执行一次。

通过startService()方式启动Service,只要不调用stopService(),就会一直运行,不会与调用者产生关联。它的onBind()没有返回Binder对象,所以调用者无法与Service产生交互。

2. Service的启动过程:

startService()其实是由ContextImpl类型的mBase成员变量调用的,这个变量在ActivityThread的performLaunchActivity()中被创建,并通过attach()与Activity产生关联。

startService()的启动分为3个部分

ContextImpl到AMS到过程

AMS到ActivityThread过程

ActivityThread启动Service过程

Service的绑定过程

1. 先看一下bindService()的使用示例:

2. Service的绑定过程

bindService()其实是由ContextImpl类型的mBase成员变量调用的,这个变量在ActivityThread的performLaunchActivity()中被创建,并通过attach()与Activity产生关联。

bindService()的绑定过程分为3个部分:

ContextImpl到AMS到过程

Service的绑定过程

附:

上一篇下一篇

猜你喜欢

热点阅读