随笔分类 - Android
摘要:一、UI线程是什么? UI线程就是刷新UI的线程。 二、UI线程是不是主线程? 主线程何时启动 在应用启动时AMS请求Zygout进程启动应用进程,在应用进程启动后的第一条线程就是主线程,线程启动后执行ActivityThread.main()函数,在main()函数中启动的主线程Looper。 p
阅读全文
摘要:一、Activity启动流程 简述Activity启动过程 attach上下文不只是将创建的Context对象设置到Activity中,在attach还做了其它的初始化操作,比如:创建PhoneWindow。 二、Activity作用 Activity主要的作用是管理Activity的生命周期和事件
阅读全文
摘要:一、ServiceManager的作用是什么 ServiceManager从字面意思是管理服务的。 ServiceManager是用于查询服务和获取服务的。 二、ServiceManager启动过程 源码:frameworks/native/cmds/servicemanager ServiceMa
阅读全文
摘要:一、启动过程 1. 启动过程 2. 执行流程 发送startAcitivity请求到AMS。 AMS查看应用进程是否启动。 未启动应用进程。 AMS向Zygote进程发送启动进程请求(socket通信)。 Zygote进程Fork应用进程。 应用进程已经启动,进程创建Activity过程。 Zygo
阅读全文
摘要:一、Application的作用是什么? 保存全局变量,但是,不建议在Application中保存全局变量。在App进入后台后,当前设备内存不足,会回收一些不在前台应用的内存,保存在Application中的全局变量会被释放,当前App在回到前台使用这些变量,变量会是null。 初始化任务。 提供C
阅读全文
摘要:一、Context作用是什么? 下面看下Context源码中的注释: /** * Interface to global information about an application environment. This is * an abstract class whose implement
阅读全文
摘要:一、ThreadLocal是什么? ThreadLocal全名是Thread Local Variable,是Java中线程局部变量类。 二、作用 用于存储线程内的变量,变量不会被其它线程污染。 三、原理 通过源码: public class ThreadLocal<T> { /** * Threa
阅读全文
摘要:一、什么是系统服务及哪些是系统服务 系统服务包括:AMS、WMS、PMS、PKMS等。 二、Binder应用服务 什么Binder? 三、系统服务与Binder应用服务启动 1. 系统服务启动是通过SystemServer中的run函数中启动的。 // Start services. try { t
阅读全文
摘要:一、简介: Binder是跨进程内存访问,是Android中使用最广泛的IPC机制。 Binder由以下几部分组成: Binder驱动 Binder Manager Binder Client Binder Service 对照TCP/IP中Client与Server服务连接过程: Binder驱动
阅读全文
摘要:一、SystemServer启动做了哪些事? 启动各种服务,是将系统服务注册到ServiceManager中,/framewoks/base/core/java/android/app/SystemServiceRegister.java: /** * Manages all of the syst
阅读全文
摘要:一、服务 系统服务将服务注册在ServiceManager中,Client通过ServiceManager获取服务的Bindler实例,通过Binder与服务通信。 ServiceManager源码(framework/base/core/java/android/os/ServiceManager
阅读全文
摘要:一、简介 1. Linux内核基础知识, (1)进程隔离/虚拟地址空间 进程隔离是防止进程A数据写入到进程B地址空间,进程隔离实现使用了虚拟地址空间。 进程间通信需要使用某种相应的通信机制,在Android中使用Binder实现。 (2)系统调用 (内核空间和用户空间)? 对内核有某些保护机制来告诉
阅读全文
摘要:一、Android系统启动了哪些服务进程? 系统首页启动系统第一个进程Init进程,init进程加载init.rc文件。在init.rc文件在需要启动的服务进程配置,其中包括: Zygote进程:/system/bin/app_progress ... servicemanager:/system/
阅读全文
摘要:1. Zygote进程作用是什么? 启动SystemServer。 SystemServer启动后做了什么? 创建Binder线程池。 启动SystemServiceManager。 孵化App进程。 2. Zygote进程什么时候被启动? Android系统启动后第一个启动的进程就是Zygote进
阅读全文
摘要:1. 什么是UI线程? App通过Zygote fork创建一个App进程,通过ActivityThread的main()函数创建ActivityThread实例及UI线程Looper对象。 程序都有一个main()函数,也就是主函数,Android中的主函数在ActivityThread这个类中,
阅读全文
摘要:一、LiveData是什么? LiveData是可观察数据存储器类,与常规可观察数据存储类不同,LiveData具有对系统组件(如:Activity、Fragment、Service等)的生命周期感知能力。 LiveData只有在生命周期的活跃状态下才会更新数据,即start、resume,非活跃状
阅读全文
摘要:一、ViewModel是什么? ViewModel以注重组件生命周期的方式存储和管理页面相关的数据。ViewModel让Activity未设置configChanages="orientation|screenSize"属性时,设备发生旋转后,页面数据得以继续留存。 二、ViewModel产生背景?
阅读全文
摘要:一、ThreadPoolExecutor类使用 1. 创建线程池源码: /** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the nu
阅读全文
摘要:1. 线程的状态 Java程序在运行过程中线程可能有6种状态: New:新创建状态; Runnable:可运行状态; Blocked:阻塞状态; Waiting:等待状态; Timed waiting:超时等待状态; Terminated:终止状态; 2. 线程同步 1. 加锁与条件变量 Lock/
阅读全文
摘要:1. Java线程 2. Java线程安全 3. 多线程与线程间通信 4. Java 线程池ThreadPoolExecutor类 5. Java线程与线程池进阶
阅读全文

浙公网安备 33010602011771号