概述
目标:
-
每周至少做一个 leetcode 的算法题
-
阅读并点评至少一篇英文技术文章
-
学习至少一个技术技巧
-
分享一篇有观点和思考的技术文章
第5周:
-
Leetcode 142 题
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode detectCycle(ListNode head) { if (head == null || head.next == null || head.next.next == null) { return null; } ListNode fast = head.next.next; ListNode slow = head.next; // while (true) { // if (fast == null || fast.next == null) // return null; // 说明没有环 // else if (fast == slow || fast.next == slow) { // // 说明有环 // return slow; // } else { // fast = fast.next.next; // slow = slow.next; // } // } while (fast != slow) { if (fast.next == null || fast.next.next == null) { return null; } else { fast = fast.next.next; slow = slow.next; } } //说明有环 fast = head; while (fast != slow) { fast = fast.next; slow = slow.next; } return slow; } }
-
学习至少一个技术技巧
Android体系结构
[外链图片转存失败(img-hjBN4Fkx-1566615246130)(images/android-boot-6363546.jpg)]
图解: Android系统启动过程由上图从下往上的一个过程:Loader -> Kernel -> Native -> Framework -> App
Android系统启动过程
[外链图片转存失败(img-WT0mMknZ-1566615246131)(images/android-booting.jpg)]
序号 进程启动 概述 1 init进程 Linux系统中用户空间的第一个进程, Init.main 2 zygote进程 所有App进程的父进程, ZygoteInit.main 3 system_server进程 系统各大服务的载体 4 servicemanager进程 binder服务的大管家, 守护进程循环运行在binder_loop 5 app进程 通过Process.start启动App进程, ActivityThread.main AMS
AMS启动
- 在system_server进程中启动
- SystemServer.java #startBootstrapServices()
- 创建AMS实例对象,创建Andoid Runtime,ActivityThread和Context对象;
- setSystemProcess:注册AMS、meminfo、cpuinfo等服务到ServiceManager;
- installSystemProviderss,加载SettingsProvider;
- 启动SystemUIService,再调用一系列服务的systemReady()方法;
- 发布Binder服务
服务名 类名 功能 activity ActivityManagerService AMS procstats ProcessStatsService 进程统计 meminfo MemBinder 内存 gfxinfo GraphicsBinder 图像信息 dbinfo DbBinder 数据库 cpuinfo CpuBinder CPU permission PermissionController 权限 processinfo ProcessInfoService 进程服务 usagestats UsageStatsService 应用的使用情况 想要查看这些服务的信息,可通过dumpsys <服务名>命令。比如查看CPU信息命令dumpsys cpuinfo
从设计模式的角度:动态代理模式
API 23源码为例:
[外链图片转存失败(img-bahaQ45b-1566615246131)(images/ams_uml-6435169.png)]
-
分享一篇有观点和思考的技术文章
- https://www.jianshu.com/p/3988699ad131
-
阅读并点评至少一篇英文技术文章
- https://medium.com/@mjpeyman.arab/android-modularization-hexagonal-architecture-with-kotlin-and-mvvm-part-1-db338833d6c2 一遍介绍Android新的架构的博文 六芒星架构
最后
以上就是平淡凉面为你收集整理的Android工程师之ARTS挑战第六期第5周的全部内容,希望文章能够帮你解决Android工程师之ARTS挑战第六期第5周所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复