android service
2016-11-09 15:05:45 0 举报
Android Service是一种在后台运行的组件,它可以在不需要用户交互的情况下执行长时间运行的操作。Service没有用户界面,但可以与用户界面交互,例如播放音乐或处理网络请求。Service可以在其他应用程序中启动,也可以由系统启动,例如在设备启动时或在低电量状态下。Service的生命周期由系统管理,当所有正在运行的组件都不再需要它时,系统会停止它。Service可以通过startService()方法启动,通过bindService()方法绑定,通过unbindService()方法解绑,通过stopService()方法停止。
作者其他创作
大纲/内容
ContextImpl : bindServiceCommon
ActivityThread : handleCreateService
ActiveServices : requestServiceBindingsLocked
ContextWrapper : mBase.bindService
Service类的创建过程与Activity是略微有点不同的,虽然都是通过ClassLoader通过反射创建,但是Activity却把创建过程委托给了Instrumentation类,而Service则是直接进行
Activity : bindService
ActiveServices: publishServiceLocked
如果Service所在进程不存在,那么会调用startProcessLocked方法创建一个新的进程,并把需要启动的Service放在一个队列里面;创建进程的过程通过Zygote fork出来,进程创建成功之后会调用ActivityThread的main方法,在这个main方法里面间接调用到了AMS的attachApplication方法,在AMS的attachApplication里面会检查刚刚那个待启动Service队列里面的内容,并执行Service的启动操作;之后的启动过程与进程已经存在的情况下相同
ContextImpl : bindService
ActivityManagerService : bindService
ActivityManagerService : mAm.startProcessLocked
ActivityManagerService: publishService
ActiveServices : realStartServiceLocked
ActiveServices : requestServiceBindingLocked
ActiveServices : bringUpServiceLocked
ActivityThread : handleBindService
ActiveServices : bindServiceLocked
Singleton gDefault = new Singleton() { protected IActivityManager create() { IBinder b = ServiceManager.getService(\"activity\"); IActivityManager am = asInterface(b); return am; } };
0 条评论
下一页