Android面试系列一
什么是ANR,如何避免它
ANR是应用程序无响应(Application Not Responding)的的英文缩写;
当Android 手机在一段时间响应不够灵敏,系统会向用户展示一个对话框,这个对话框就是ANR对话框;用户可以选择继续等待,也可以选择关闭app。
发生ANR的时间
Activity:5秒;
BroadCastReceiver:10秒;
Service:20秒;
造成ANR的原因即耗时操作的原因
- 主线程被IO操作阻塞(从4.0之后网络IO不允许在主线程中)
- 主线程中存在耗时的计算
- 主线程中错误的操作,比如Thread.wait 或者 Thread.sleep等Android系统会监控程序的响应状况,一旦出现下面几种情况,则会弹出ANR对话框
- 应用在5秒内未想用用户的输入事件(如按键或者触摸)
- BroadCastReceiver未在10秒内完成相关的处理
- Service在20秒内无法处理完成
解决方案
- 将所有耗时操作,比如访问网络,Socket通信,查询大量SQL语句,复杂逻辑计算等都放在子线程中,然后通过handler、runonUIThread、AsyncTask、RxJava等方式更新UI。确保用户页面的流畅,如果需要用户等待,那么可以显示进度条
简述Android中的IPC机制
IPC(Inter-Process Communication,进程间通信)
- aidl是Android Interface definition language的缩写,它是一种Android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口
- 编译器可以通过扩展名为aidl的文件生成一段代码,通过预先定义的接口达到两个进程内部通信的目的
- BroadcastReceiver也可以实现进程间通信
- ContentProvider提供进程间数据共享
Android自定义组件实现思路
- 继承某个现有的组件,在其基础上添加额外的功能
- 继承自某个Layout,实现组合组件自定义,如TextView和EditText组合实现登录注册组件
- 继承View,实现onDraw()方法,实现自己绘制组件
说明Handler机制的原理
- 一个Handler允许你发送和处理Message和Runable对象,每个线程都有自己的Looper,每个Looper中封装着MessageQueue
- Looper负责不断的从自己的消息队列里取出队头的任务或消息执行。每个Handler也和线程关联
- Handler负责把Message和Runable对象传递给MessageQueue(post,sendMessage方法),这些对象离开MessageQueue时,handler负责执行它们(handleMessage方法)
- Message类就是定义一个信息,这个信息中包含一个描述符和任意的数据对象,这个信息被用来出传递给Handler.Message对象
throw与throws的区别
throws是用来声明一个方法可能抛出的所有异常信息
通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的所有异常
throws通常不显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法
throw是抛出一个具体的异常类型
throw需要用户自己捕获相关的异常,然后对其包装,然后抛出
屏幕适配的处理技巧都有哪些
为什么要适配
为了保证用户获得一致的用户体验效果,使得某一元素在Android不同尺寸、不同分辨率、不同系统的手机上具备相同的显示效果。
- Android系统碎片化:基于Google原生系统,小米MIUI、魅族flyme、华为EMUI等等;
- Android机型屏幕尺寸碎片化:5寸、5.5寸、6寸等等;
- Android屏幕分辨率碎片化:720x1280、1080x1920等;
基本概念
- 像素(px):像素就是手机屏幕的最小构成单元,px=1像素点一般情况下UI设计师的设计图会以px作为统一的计量单位;
- 分辨率:手机在横向、纵向上的像素点数总和。一般描述为 宽x高,即横向像素点个数x纵向像素点个数(如1080x1920),单位:px;
- 屏幕尺寸:手机对角线的物理尺寸。单位 英寸(inch),一英寸大约2.54cm常见的尺寸有4.7寸、5寸、5.5寸、6寸;
- 屏幕像素密度(dpi):每英寸的像素点数,例如每英寸内有160个像素点,则其像素密度为160dpi,单位:dpi(dots per inch);
- 密度无关像素(dp):与终端上的实际物理像素点无关,可以保证在不同的屏幕像素密度的设备上显示相同的效果,是Android特有的长度单位,dp与px的转换:1dp=(dpi/160)*1dp;
- 独立比例像素(sp):字体大小专用单位Android开发时用此单位设置文字大小,推荐使用12sp、14sp、18sp、22sp作为字体大小。
适配方案
使用今日头条的适配方案 https://github.com/JessYanCoding/AndroidAutoSize
Android面试系列一的更多相关文章
- Android面试一天一题(1Day)
写在前面 该博客思路源于在简书看到goeasyway博主写的Android面试一天一题系列,无copy之意,仅为让自己总结知识点,成长一点点.先感谢各位大神的无私分享~! 关于题目,大部分则出自And ...
- Android学习系列(37)--App调试内存泄露之Context篇(下)
接着<Android学习系列(36)--App调试内存泄露之Context篇(上)>继续分析. 5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncT ...
- 【Android 面试基础知识点整理】
针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...
- 面试系列二:精选大数据面试真题JVM专项-附答案详细解析
公众号(五分钟学大数据)已推出大数据面试系列文章-五分钟小面试,此系列文章将会深入研究各大厂笔面试真题,并根据笔面试题扩展相关的知识点,助力大家都能够成功入职大厂! 大数据笔面试系列文章分为两种类型: ...
- 【Android面试查漏补缺】之事件分发机制详解
前言 查漏补缺,查漏补缺,你不知道哪里漏了,怎么补缺呢?本文属于[Android面试查漏补缺]系列文章第一篇,持续更新中,感兴趣的朋友可以[关注+收藏]哦~ 本系列文章是对自己的前段时间面试经历的总结 ...
- Android开发如何准备技术面试(含Android面试押题)
今年毋庸置疑是找工作的寒冬,每一个出来找工作的同学都是值得尊敬的.现在找工作,虽然略难,但是反过来看也会逼迫我们成为更加优秀的自己. 但是不管是旺季还是寒冬,有一些优秀的同学找工作还是挺顺利的.所以说 ...
- 阿里、腾讯、百度、网易、美团Android面试经验分享,拿到了百度、腾讯offer
基本情况 2021届普通本科,Android开发岗. 此文主要是2020年秋招面试经验汇总,最终拿到了百度.腾讯的offer. 主要包括阿里三面,腾讯四面,百度三面,网易三面,美团一场面完. 阿里(由 ...
- Android面试总结 (转)
1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在指 ...
- 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的
===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...
随机推荐
- RabbitMQ+Redis模拟手机验证码登录
RabbitMQ+Redis模拟手机验证码登录 依赖 <dependency> <groupId>org.springframework.boot</groupId> ...
- java43
自定义日期格式 import java.text.DateFormat; import java.text.ParseException; import java.util.Date; public ...
- 第15.32节 PyQt(Python+Qt)入门学习:containers容器类部件QToolBox工具箱介绍及使用案例
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...
- apache、nginx、Tomcat、IIS引擎解析漏洞
引擎解析漏洞 常见的web容器有IIS.Apache.Nginx.Tomcat等,以下是详细讲解 IIS IIS简介 是 ...
- Mac下查看端口占用情况
为什么 后端开发时,有时会碰到服务无法正常启动,端口被占用.这时需要查看端口占用情况. 是什么 需要用到一些Linux命令. 怎么做 查看占用端口51805的进程 lsof -n -P -i TCP ...
- Aap.Net中的Action和Func委托
前言 最近在阅读某开源框架源码的时候,发现作者在其中运用了很多Action委托和Func委托,虽然我之前在项目中也有一些对委托的实操,但还是免不了长时间的不用,当初消化的一些委托基础都遗忘了...索性 ...
- hash相关
转译☞:https://www.cs.rice.edu/~as143/COMP441_Spring17/scribe/lect4.pdf 1 大规模图片检索问题 基于树模型的算法在分类跟聚类中很受欢迎 ...
- 题解-洛谷P5217 贫穷
洛谷P5217 贫穷 给定长度为 \(n\) 的初始文本 \(s\),有 \(m\) 个如下操作: \(\texttt{I x c}\),在第 \(x\) 个字母后面插入一个 \(c\). \(\te ...
- redis学习之——持久化RDB 和AOF
RDB: 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里.rdb 保存的是dump.rdb文件 RDB工作原理: Redis会 ...
- 工作笔记——CPLD与MCU通过SPI通信
一.需求描述 MCU需要接收来自CPLD的升级固件数据 CPLD对MCU只进行发送数据,不接收MCU的数据 CPLD无法告知数据传输的开始和结束,需要MCU自行判断(CPLD只是数据透传,不做数据判断 ...