摘要
主要根据谷歌官方提供的demo,来了解ExoPlayer的基本使用。
做一个有追求的青年
https://rainmonth.github.io/posts/A191025.html
Service基本概念
Android 四大组件之一,运行于主线程之中。
调用startService() 和 bindService()后,要销毁service必须_同时调用_stopService()和unbindService()方法才可以,因为:
- 点击Stop Service按钮只会让Service停止;
- 点击Unbind Service按钮只会让Service和Activity解除关联;
一个Service必须要在既没有和任何Activity关联又处理停止状态的时候才会被销毁;
要分析的源码文件
1 | frameworks/base/cmds/app_process/app_main.cpp |
Binder系统中的Binder线程类型
spawnPooledThread(true)
方法,在这个方法中创建Binder主线程,编号从1开始(即binder主线程名为binder_1
spawnPooledThread(false)
方法来创建,该线程名称格式为binder_x
;spawnPooledThread
方法,而是直接调用IPC.joinThreadPool()
方法将当前线程加入到binder线程队列。如mediaserver
和servicemanager
的主线程都是binder线程,但system_server
的主线程并非binder线程。Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么
Launcher 进程
system_server 进程
zygote进程
目标应用的进程
参考文章
https://rainmonth.github.io/posts/A191020.html
摘要
adb,指的是Android Debug Bridge,即Android调试桥,顾名思义,和Android调试有莫大的关系。可以在命令通过输入命令来查看Android系统支持的服务的各种运行状态。
首先要已经搭建好Android开发环境(具体请自行百度)
其次,为了避免频繁调用cd(切换目录命令,建议配置好环境变量,Mac下具体配置如下)
1 | export PATH=${PATH}:/Users/RandyZhang/Library/Android/sdk/platform-tools |
https://rainmonth.github.io/posts/A191018.html
在这里非常感谢Gityuan的博客,让人受益匪浅。
AMS,即ActivityManagerService,是Android系统的核心服务,负责四大组件的启动、切换、调度以及应用进程的调度和管理,其API并未对我们直接开放,在开放的ActivityManager中主要通过ActivityManagerNative来使用AMS提供的一些API,本文主要介绍AMS的启动过程。