一丶概述
去年 8 月下载的面试视频, 现在才想起来看, 金三银四刷起来
本文为视频笔记和加深链接, 希望对你有所帮助
一丶课程介绍
BAT 大咖助力 全面升级 Android 面试
二丶面试建议
三丶面试内容
1.Activity
四大组件之一, Activity 是一个应用程序组件, 提供一个屏幕, 用户可以用来交互为了完成某项任务
1)Ativity 生命周期
activity 的四种状态
running 活动状态, 用户点击屏幕, 屏幕做出相应
paused 失去焦点时 (被一个新的非全屏的 Activity 或者一个透明的 Activity 被放置在栈顶), 操作屏幕无反应, activity(成员变量, 状态信息) 存在; 内存紧张, activity 回收
stopped 该 activity 被另一个 activity 完全覆盖的时候, activity(成员变量, 状态信息)存在; 内存紧张, activity 回收
killed activity 被回收
activity 生命周期分析
onCreate() 设置一些布局的资源, 数据加载, 图片预加载
onStart() 正在加载, 可见, 不可操作
onResume() 可操作, 课可交互
onRestart() 由不可见到可见状态
onDestroy() 销毁, 资源释放
android 进程优先级
前台>可见 (不可操作)> 服务>后台 (前台隐藏)> 空>
2)android 任务栈(后进先出)
任务栈不唯一
一个 activity 可以独享一个任务栈
3)activity 启动模式
standard 系统的默认模式, 一次跳转即会生成一个新的实例并加入任务栈比较消耗资源
(不同页面跳转就是多个 activity 跳转(复用)
singletop 站顶复用模式如果新 activity 在栈顶存在, 就复用
如果 activity 处于站点第二个位置的话, 还是会重新创建 activity
singlettask 站内复用模式(单例) 如果新 activity 在整个栈中存在, 就将 activity 置于栈顶, 并将该 activity 以上的所有销毁
singleinstance 该 activity 将独占一个 task(task 可以理解为进程)
4)schema 跳转协议
这里写图片描述
- 服务端下发 url 路径, 客户端根据其跳转
- 从 H5 页面跳转到相应 APP 的 activity
- APP 根据 url 跳转到另一个 APP
推荐加深博文
扣丁学堂 Activity(一)
扣丁学堂 Activity(二)
2.Fragment
1)
- 使用频率, 作用, 生命周期(view 没有)
- 节省内存, 相比 Activity
- UI 切换更加舒适
2)
- 依附 Activity
- 静态加载(添加 Fragment 到 Activity 的布局文件中)
- 动态加载, 添加 Fragment 到 Activity
FragmentPagerAapter 适用于页面较少的情况
detach 方法就是把 ActivityUI 和 FragmentUI 分离
FragmentStatePagerAdapter 适用于页面较多的情况(节省内存, 切换页面, 回收内存)
viewpager -> 内存消耗
Fragment 的生命周期
Fragment 从启动到销毁生命周期的全过程
流程图说明, 在方法一要在 fragment 方法的 OnActivityCreated 方法里, Activity-onCreate 之后
fragment 相关方法:
replace 替换 Activity 最上层的 Fragment
add
remove
加深学习:
扣丁学堂 Fragments
3.Service
- service 和 广播 broadcast 都是运行在主线程, 都不能做长时间耗时操作
- 安卓四大组件之一
- ANR(application not responding)程序未响应
- 耗时网络, 文件数据查询, 阻塞 UI
- service 使用子线程进行后台操作
- 线程: 程序执行流的最小单元, 分配 CPU 的最小单位
- 功能 (工作) 线程: 可以执行在线程执行一些耗时操作
- 主线程: 主要负责一些 UI 线程的绘制
- service 和 Thread 的关系不是很大 (后台服务子线程)
1.Startservice
StartCommand 返回值: START_STICKY 意味着当整个 Service 因为内存不足而被系统杀掉之后, 一段时间内存再次充足的时候, 会尝试重新创建 Service(intent 为空)
2.Bindservice
加深学习:
扣丁学堂 Service
4.BroadcastReceiver
加深学习:
扣丁学堂 BroadcastReceiver(广播)
Android 四大组件: BroadcastReceiver 史上最全面解析
十分钟解析 LocalBroadcastManager
5.webView
Android: 最全面的 Webview 详解
6.Binder
Android: 图文详解 Binder 跨进程通信 原理
7.handler
扣丁学堂 handler(已加强延伸)
8.AsyncTask
扣丁学堂 AsyncTask(已加强延伸)
9.handleThread
Android 多线程: HandlerThread 详细使用手册
Android 多线程: 一步步带你源码解析 HandlerThread
10.InterService
Android 多线程: IntentService 用法 & 源码分析
Android 多进程编程 15 问 15 答!
视频下载链接(目前审核中):https://download.csdn.net/download/dt235201314/10309622
来源: https://blog.csdn.net/dt235201314/article/details/79669044