随笔分类 -  Android Framework

学习 Android Framework
摘要:安卓中的 android:sharedUserId 1、android给每一个apk进程分配一个单独的空间,manifest中的userid就是对应分配的Linux用户id,并为它创建一个沙盒,防止其他应用程序的影响。 2、用户id在apk安装到设备中时被分配。 3、通常不同的apk具有不同的use 阅读全文
posted @ 2023-09-10 22:15 随易来了 阅读(1511) 评论(0) 推荐(0)
摘要:参考: 1、Android 9.0系统源码_SystemUI(一)SystemUI的启动流程 (1)启动SystemUiService SystemServer.startOtherservice() startSystemUI() (2)在 SystemUIService 中启动 SystemUI 阅读全文
posted @ 2023-03-09 18:32 随易来了 阅读(304) 评论(0) 推荐(0)
摘要:https://cloud.tencent.com/developer/article/1787159?from=article.detail.1839903 Window十二问(快扶我起来,我还能问) https://cloud.tencent.com/developer/article/1963 阅读全文
posted @ 2022-12-20 18:03 随易来了 阅读(48) 评论(0) 推荐(0)
摘要:参考:为什么SystemServer进程与Zygote进程通讯采用Socket而不是Binder 1、AMS、WMS等系统服务处于SystemServer进程中 2、SystemServer(SystemService)与ServiceManager 勿混淆 3、ServiceManager 启动时 阅读全文
posted @ 2022-12-05 18:13 随易来了 阅读(570) 评论(0) 推荐(0)
摘要:1、IPC inter-process community 进程间通信 2、bind机制对应的java文件 :Android 理解Binder机制解读AIDL对应的Java文件 3、主要机制是内核空间存在共享区域,基于内存映射mmap来实现ipc通信 3、wms、ams、pms系统主要服务都是通过b 阅读全文
posted @ 2022-12-05 15:36 随易来了 阅读(382) 评论(0) 推荐(0)
摘要:1、内存泄露的本质 指当前对象在实际运行中超出了其本身意义上生命周期范围的,从而导致本该处于内存可回收状态的但实际上却一直处于不可回收状态的内存占用非正常现象。 2、常见的两种现象: (1)异步回调中持有M,异步回调生命周期不可控,或者本身的生命周期长于Activity,导致内存泄漏。常见于Acti 阅读全文
posted @ 2022-11-24 11:50 随易来了 阅读(215) 评论(0) 推荐(0)
摘要:Application Service Activity 里的context 通过ContextImpl创建得到的,继承图: 应用中的context数量:activity + service + 1 正确使用Context 一般Context造成的内存泄漏,几乎都是当Context销毁的时候,却因为 阅读全文
posted @ 2022-11-18 15:28 随易来了 阅读(78) 评论(0) 推荐(0)
摘要:《阿里巴巴java开发手册》中指出线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程;而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式等创建线程池,使用ThreadPoolExecutor有助于大家明确线程池的运行规则,规避资源耗尽的风险。 线程 阅读全文
posted @ 2022-11-17 15:26 随易来了 阅读(95) 评论(0) 推荐(0)
摘要:核心类,在主线程中定义: Handler,ActivityThread,Looper,MessageQueue。 Looper类 包含MessageQueue,Thread,ThreadLocal 通过ThreadLocal.set(key) 保存线程唯一的Looper 每个线程仅有一个Looper 阅读全文
posted @ 2022-11-17 11:18 随易来了 阅读(37) 评论(0) 推荐(0)
摘要:消息机制中几个重要的类 1、Looper 创建于主线程ActivityThread,内部用threadlocal保存了一个Looper单例对象,因此每个线程中有且仅存在一个Looper对象。 管理MessageQueue,通过Looper.loop()循环获取队列中的任务,并交给handler对象去 阅读全文
posted @ 2022-11-09 17:25 随易来了 阅读(134) 评论(0) 推荐(0)
摘要:Andoird是不允许直接在子线程中更新UI的。原因是子线程中更新UI会引起线程不安全问题,导致界面卡顿掉帧。 在子线程中run方法中,通过handler.post或其他方式将更新UI的任务消息发送到UI线程,由UI线程更新UI。 Thread和Runnable的区别 Thread代表线程类。sta 阅读全文
posted @ 2022-11-09 14:45 随易来了 阅读(551) 评论(0) 推荐(0)