其他分享
首页 > 其他分享> > 2020年Android面试常考知识点汇总,近期有面试的必看

2020年Android面试常考知识点汇总,近期有面试的必看

作者:互联网

  3.  注册静态BroadcastReceiver,监听系统广播,然后判断Service状态
4.  守护进程

BroadcastReceiver:

ContentProvider:


Android进程(等级)

  1. foreground process 前端进程

    前端进程就是目前显示在屏幕上和用户交互的进程

    比如说:

    1. 顶层可交互的activity(已执行onResume);
    2. 有个Service,并绑定到跟用户正在交互的activity;
    3. 在Service里调用了startForground函数;
    4. 正在执行onReceive函数的BroadCastReceiver
  2. visible process 可见进程

    没有任何前台组件,但是仍然能影响用户在屏幕上看到东西。
    比如:

    • 如果一个activity在一个对话框运行之后仍然是可视的;
    • 输入法的弹出时。
  3. Service process 服务进程
    服务进程不会直接为用户所见
    比如在后台播放mp3或者从网上下载东西

  4. background process 后台进程
    比如:Activity执行了onStop

  5. empty process 空进程


数据持久化

SQLight:

- SQLite是一个轻量级的数据库,支持基本的SQL语法
- SQLiteDatabase的类,封装了一些操作数据库的api
    1\. context.openOrCreateDatabase()方法创建SQLiteDatabase实例
    2\. SQLiteDatabase实例调用insert()方法插入数据
    3\. 调用query()方法查询数据
    4\. 调用execSQL()方法执行SQL语句

SharedPreference:

- 是一种轻量级的数据存储方式,采用简直对的方式来存储数据。
- 其本质就是一个xml文件,一般位于/data/data/包名/shared_prefs/目录下。
- 由于内存中存在sharedPreference文件的缓存,所以在多进程的环境下,系统对它的读写不可靠。因此不建议用在IPC中

ContentProvider:

- Android系统中能实现不同应用间共享的一种数据存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储
- 每个Content Provider都会对外提供一个公共的URI,应用程序通过这个URI来对数据进行操作。
- Content Provider天生支持跨进程访问,因此可以用于IPC

Android应用程序之间是通过哪些方式共享数据的?

File,Sqlite,Content Provider,BroadCast Receiver,Intent,同个Application内部的话还可以通过静态变量共享数据。


webView

加载

  1. 提高渲染的优先级

    webSettings.setRenderPriority(RenderPriority.HIGH);

  2. 把图片加载放在最后来加载渲染

    webSettings.setBlockNetworkImage(true);

  3. 使用硬件加速,该功能在Android 3.0 (API level 11)才加入。
    硬件加速可以在一下四个级别开启或关闭:Application、Activity、Window、View
    比如,在AndroidManifest.xml中添加android:hardwareAccelerated属性;关闭view的硬件加速myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

  4. 开启缓存
    设置websetting

js和java对象交互

  1. 获取webview控件的websetting

  2. 设置websetting.setJavascriptEnabled( true )

  3. 将一个对象暴露给JavaScript:webview.addJavascriptInterface。这个对象包含了JS调用的方法,这些方法用@JavascriptInterface修饰

  4. JS通过这些方法与Android交互

防止OOM

  1. 在代码中动态地将webview设置到布局中,而不是直接写到xml文件中;
  2. 在Activity的onDestory中销毁webview

线程相关

Linux线程基础

ANR

- what
    - Activity 5s内无响应,BroadcastReceiver 10s内无响应
    - /data/anr/traces.txt 文件记录了ANR的信息
- why
- how

耗时任务或者线程间通讯

Handler

MessageQueue本质上是一个单链表,不是Queue。采用FIFO方式管理,enqueueMessage()方法是将消息插入一条队列,next()方法是一个无限循环的方法。如果有消息,则取出,如果没有,就阻塞

本质上是一个继承了Thread的线程类
通过创建HandlerThread获取looper对象,传递给Handler对象,执行异步任务。在HandlerThread中通过**Looper.prepare()来创建消息队列,并通过Looper.loop()**来开启消息循环。创建HandlerThread后必须先调用start()方法,才能调用getLooper()获取Looper对象。

HandlerThread封装了Looper对象,使我们不用关心Looper的开启和释放的细节问题。如果不用HandlerThread的话,需要手动去调用Looper.prepare()和Looper.loop()这些方法。

Android精编面试题电子版解析

IntentService

OOM


View相关

三部曲

三个核心步骤:Measure、Layout、Draw

Touch分发机制

重要

滑动冲突

简述Activity、Window、WindowManager、View、ViewRootImpl的作用和相互之间的关系

RecyclerView


IPC

Linux中IPC的方式:命名管道、信号量、共享内存

基础

序列化

机制:Bundle、文件共享、ContentProvider、Socket、AIDL、Messager

Binder

四个角色:Client、Server、ServiceManager、BinderDriver

调用过程:
1. Server向ServiceManager注册
2. Client通过ServiceManager获取Server的代理对象
3. Client向代理对象发起请求,该请求通过BinderDriver发送给Server处理
4. Server通过BinderDriver返回处理结果

在一个应用有多个使用AIDL的场景,无需为每一个AIDL创建自己的Service。而是使用一个Service,创建并返回一个Binder连接池的Binder对象。Activity在使用AIDL的时候,可以通过该Binder连接池对象,获取不同的Binder对象(类似于工厂模式)

Android精编面试题电子版解析

AIDL

Messager

启动流程

Android开机流程

init进程-zygote进程-SystemServer进程-各种ManagerService(AMS,PMS,WMS)- launcher程序

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

总结

Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

上面分享的字节跳动公司2020年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](

)**

就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我

①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包阅读下载,最后觉得有帮助、有需要的朋友可以点个赞

a开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](

)**

就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我

①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包阅读下载,最后觉得有帮助、有需要的朋友可以点个赞

[外链图片转存中…(img-dvv4nXNf-1631334362315)]

[外链图片转存中…(img-ZY11omfc-1631334362316)]

[外链图片转存中…(img-dCqaW4RN-1631334362317)]

标签:知识点,Service,常考,面试,Activity,进程,Android,方法,View
来源: https://blog.csdn.net/yandex666/article/details/120236041