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 ...
随机推荐
- Java基础教程——字节流
IO流 水流 特点 连续性 逝者如斯夫,不舍昼夜: 方向性 一江春水向东流.水往低处流.百川东到海,何时复西归?少壮不努力,老大徒伤悲! 源头尽头 唯有源头活水来:覆水难收 Java里的IO也有这样的 ...
- nacos单机,集群安装部署
nacos单机启动 准备 下载nacos安装包 下载地址 准备centos环境 (本次测试使用docker) PS C:\Users\Administrator> docker run -tid ...
- LeetCode 043 Multiply Strings
题目要求:Multiply Strings Given two numbers represented as strings, return multiplication of the numbers ...
- 这可能是最为详细的Docker入门总结
写在前面 毕设是关于区块链的,自然就用到了docker,感觉到了docker的强大.学习源于总结,所以找了一些资料,这篇文章原作写的不错,看了好多遍哈哈. 这可能是最为详细的Docker入门总结 市面 ...
- moviepy音视频剪辑:mask clip遮罩剪辑、遮片、蒙版的作用以及其包含的构成内容
☞ ░ 前往老猿Python博文目录 ░ 在阅读moviepy的类ImageClip的构造方法代码时,对于其中涉及遮罩的处理没有理解,到处查找遮罩的资料没有查到,最后到moviepy的官网上尝试了一下 ...
- jmeter.墨振文档
jmeter 介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具 (1).它可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象 ...
- IAR FOR STM8 同一个工程芯片选择003F3可以编译003K3提示空间不足
同一个工程文件,选择103F3可以编译通过,但是选择103K3便提示空间不足 百思不得其解,查阅大量资料无果.最后在IAR工程里面找到了配置文件 打开003f3的配置文件和003K3配置文件进行对比, ...
- 团队作业part2--需求规格说明书
需求规格说明书 一.目的 本说明书为了让用户尽快了解产品所含功能,描述用户对产品的期望与需求.明确软件开发的最终目的,使开发出来的软件能够更好的达到用户的需求.其作为用户和软件开发人员达成的技术协议书 ...
- mock.js 和easy-mock使用
mock.js 1.项目中引入mock.js <script src="../static/js/mock.js" type="text/javascript&qu ...
- python+eclipse 引用 import requests报错解决。
用pip install requests命令执行安装下 再重启eclipse就好了. 用pip install requests命令执行安装下 再重启eclipse就好了. 用pip install ...