Framework -- wsl编译安卓系统
最近在研究研究android系统源码,打算在编译一个room验证下自己的想法,在windows上折腾很久,终于算是在windows上把安卓系统编译出来了。
最近在研究研究android系统源码,打算在编译一个room验证下自己的想法,在windows上折腾很久,终于算是在windows上把安卓系统编译出来了。
源代码控制工具 | Android 开源项目 | Android Open Source Project
1、Repo
Windows安装repo的真正解决方案_针叶的博客-CSDN博客_repo windows
sudo apt-get install repo |
2、git
3、python3
sudo apt-get install python-is-python3 |
优化电池续航时间 | Android 开发者 | Android Developers
PowerManager 用来控制设备的电源状态. 而 PowerManager.WakeLock 也称作唤醒锁, 是一种保持 CPU 运转防止设备休眠的方式.
WakeLock是什么
WakeLock是Android框架层提供的一套机制,应用使用该机制可以达到控制Android设备状态的目的。这里的设备状态主要指屏幕的打开关闭,cpu的保持运行。简单的理解WakeLock是让系统保持”清醒”的一种手段.
WakeLock作用
当手机灭屏状态下保持一段时间后,系统会进入休眠,一些后台运行的任务就可能得不到正常执行,比如网络下载中断,后台播放音乐暂停等。WakeLock正是为了解决这类问题,应用只要申请了WakeLock,那么在释放WakeLock之前,系统不会进入休眠,即使在灭屏的状态下,应用要执行的任务依旧不会被系统打断。
WakeLock有那些分类
WakeLock是PowerManager的内部类,其代码路径位于:
frameworks/base/core/java/android/os/PowerManager.java |
WakeLock 分类如下:
如果是PARTIAL_WAKE_LOCK, 无论屏幕的状态甚至是用户按了电源钮, CPU 都会继续工作. 如果是其它的唤醒锁, 设备会在用户按下电源钮后停止工作进入休眠状态.
参考地址:https://blog.csdn.net/qq_25943493/article/details/51803497
中文文档:https://github.com/baiqingsong/ChartDawn
// 禁止触摸/拖动/缩放 |
LruCache 其实挺简单的,本质是对LinkHashMap
的封装,然后通过设置maxSize
来控制LinkHashMap
的容量。
它的所有属性都是私有属性
对私有属性的setter
和getter
操作都是加了锁处理
AsyncTask 本质上是对handler和线程池对封装,在线程池中执行耗时任务,当任务完成或任务更新时,向主线程的Handler发送消息,在Handler中执行finish()
、onProgressUpdate()
等方法。
通过android的沙箱机制,可以在不同的应用间共享代码、数据、或资源文件。
阅读本文前需要了解android的沙箱机制
|
Context.CONTEXT_INCLUDE_CODE:
把参数包名对应的应用中的代码包含到Context中,这样当前应用才能访问context应用中的类,如果context对应的应用不能安全的加载到当前应用中,会报出SecurityException,如果想要加载另一个应用,访问它的数据,则这个标记必须设置
CONTEXT_IGNORE_SECURITY:忽略加载context对应的应用这个过程中的安全限制,总是允许加载,和CONTEXT_INCLUDE_CODE配合使用,代表不管是否安全,都要加载,一般使用要小心。
Android 系统中,应用是在Dalvik 虚拟机实例三运行的,而每一个虚拟机都是一个独立都进程,而在linux中,每一个进程都是相互隔离的,Android 这种基于 Linux 的进程 “沙箱” 机制,是整个安全设计的基础之一。
因为Android是继承于linux,因此继承了linux用户管理的特点,并根据移动端的特点进行了优化。
Android 沙箱的核心机制基于以下几个概念:
1、标准的 Linux 进程隔离;
2、大多数进程拥有唯一的用户 ID(UID);
3、以及严格限制文件系统权限。