From 5a121584e5f619c96b9f53ac0d3a53c4401a8bea Mon Sep 17 00:00:00 2001 From: Omooo <869759698@qq.com> Date: Tue, 31 Mar 2020 06:19:49 +0800 Subject: [PATCH] =?UTF-8?q?Create=20Framework=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=AE=9E=E9=99=85=E9=97=AE=E9=A2=98.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../综合性面试题/Framework 解决实际问题.md | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 blogs/Android/Framework/Interview/综合性面试题/Framework 解决实际问题.md diff --git a/blogs/Android/Framework/Interview/综合性面试题/Framework 解决实际问题.md b/blogs/Android/Framework/Interview/综合性面试题/Framework 解决实际问题.md new file mode 100644 index 0000000..40f2d40 --- /dev/null +++ b/blogs/Android/Framework/Interview/综合性面试题/Framework 解决实际问题.md @@ -0,0 +1,130 @@ +--- +Framework 解决实际问题 +--- + +1. 你有没有解决复杂问题的实践经验 +2. 你有没有深入研究底层原理的习惯 +3. 你的知识体系是否有一定深度 + +#### 应用组件 + +1. 想了解一下为什么 Activity 在 onResume 之后才会显示出来 +2. bindService 的时候 onRebind 总是调不到,研究原理 +3. 广播 onReceiver 的 context 可否启动 Activity,显示 Dialog? +4. 发现 provider 的 onCreate 比 Application 还早,研究一下 + +#### 消息通信 + +1. intent 带的数据量大了会异常,研究原因 +2. 需要跨进程传大图,研究 Bitmap 传输原理,Ashmem 机制 +3. 想知道 Handler 消息延时的精度怎么样,去了解原理 +4. 为什么有时候 IdleHandler 调不到,去了解原理 + +#### 性能优化 + +1. ANR 了,看主线程有没有耗时任务 +2. 卡断掉帧,了解屏幕刷新机制 +3. 启动速度优化,了解应用启动原理 +4. 内存优化,清理不必要的资源 + +```java +public class Resources{ + private static final LongSparseArray[] sPreloadedDrawables; + private static final LongSparseArray sPreloadedColorDrawableds = new LongSparseArray<>(); + private static final LongSparseArray> sPreloadedColorStateLists = new LongSparseArray<>(); +} + public static void main(String argvp[]){ + registerZygoteSocket(socketName); + preload(); + if(startSystemServer){ + startSystemServer(abiList, socketName); + } + runSelectLoop(abiList); + closeServerSocket(); + } +static void preload(){ + preloadClasses(); + preloadResources(); + preloadOpenGL(); + preloadSharedLibraries(); + preloadTextResources(); + WebViewFactory.prepareWebViewInZygote(); +} +private static void preloadResources(){ + mResources.startPreloading(); + if(PRELOAD_RESOURCES){ + preloadDrawables(runtime, ar); + preloadColorStateLists(runtime, ar); + } + mResources.finishPreloading(); +} +private static int preloadDrawables(VMRuntime runtime, TypedArray ar){ + int N = ar.length(); + for(int i=0;i