整理面试相关

来源:互联网 发布:男朋友活好体验 知乎 编辑:程序博客网 时间:2024/05/29 19:59

1.Json解析与XML解析

Gson解析和FastJson ,FastJson解析效率高

XML解析,SAX解析、DOM解析、Pull解析

2.Android中几种数据存储方式

(1)使用SharedPreferences存储数据
(2)文件存储数据
(3)SQLite数据库存储数据
(4)使用ContentProvider存储数据
(5)网络存储数据

3.Handler消息机制

Handler消息机制主要包括handler、MessageQueue、Looper

MessageQueue:消息队列,内部存储一组消息,以队列的形式向外提供插入和删除的工作,是采用单链表的数据结构来存储消息

Looper:消息循环,用来处理消息,Looper会以无限循环的形式去查找是否有消息,有就处理,没有就等待

Handler创建时会采用当前线程的Looper来构建内部消息循环系统,如果当前线程没有Looper,就会报错。

4.String、StringBuffer、StringBuilder的区别?

String 类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁

StringBuffer、StringBuilder对象代表一个字符序列可变的字符串
两个类的构造器和方法也基本相同,不同的是StringBuffer是线程安全的,StringBuilder是线程不安全的,StringBuilder的效率要高于StringBuffer

5.Android系统架构

(1)Linux内核层
Android的核心系统服务依赖于Linux2.6内核

(2)系统运行库层
Android包含一些C/C++库

(3)应用测序框架层
开发人员可以访问应用程序所使用的API框架

(4)应用程序层
开发人员开发的应用

6.Activity的生命周期

onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy()
最后还有一个onRestart()

7.Fragment的生命周期

onAttach()->onCreate()->onCreateView()->onActivityCreate()->onStart()->onResume()->onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()

8.Service生命周期

(1)当启动服务的时候,首先调用onCreate()方法,然后调用onStartCommand()方法,当第二次在启动服务的时候,只会调用onStartCommand()方法

(2)当关闭服务的时候,调用方法onDestory()

(3)当调用绑定服务的时候,调方法onCreate()->onBind()

(4)调用unbindService()后,调用方法:onUnbind()->onDestory()

9.Android中的动画

(1)帧动画
原理是将一张张单独的图片连贯的进行播放,从而产生一种动画的效果

(2)View动画:位移动画、透明度动画、旋转动画、缩放动画

(3)属性动画
API11之后才可以使用

10.Android中的四大组件

Activity、BroadCastReceiver、ContentProvider、Service

11.Android中的常用布局

线性布局、相对布局、帧布局、表格布局、绝对布局

百分比相对布局、百分不帧布局

12.Android的数据存储

(1) 使用SharedPreference存储

(2)文件存储

(3)SOLite数据库存储

(4)使用ContentProvider存储数据

(5)网络存储数据

13Activity的启动模式

(1)standard:标准模式,也是系统默认的启动模式,每次启动一个Activity都会重新创建新的实例,不论这个实例在任务栈中是否存在

(2)singleTop:栈顶复用模式

假如,Activity A启动了Activity B ,就会判断A所在的任务栈栈顶是否是B的实例。如果是,则不创建新的 activity B 实例而是直接引用这个栈顶实例,同时 onNewIntent 方法会被回调,通过该方法的参数可以取得当前请求的信息;如果不是,则创建新的 activity B 实例。

(3)singleTask:栈内复用模式

如果不存在,就会重新创建一个任务栈
如果存在,就调到栈顶

(4)singleInstance:单实例模式
Activity只能单独存在一个任务栈中

14.Android中的广播

自定义一个类继承BroadCastReceiver,实现onReceive方法

有两种注册方式:在清单文件中注册(静态注册)、在代码中注册(动态注册)

两种注册方式的区别:

静态注册是常驻型广播,动态注册是非常驻型广播
在静态注册广播中启动Activity会报错,在动态注册广播中不会报错

15.Android中的ANR

ANR的全称application not responding 应用程序未响应

Android规定,Activity如果5秒之内无法响应屏幕触摸事件或者键盘输入事件就会出现ANR,而BroadcastReceiver如果10秒之内还未执行完操作也会出现ANR

不要在UI线程中做过多的耗时操作,不要在子线程中更新UI,避免在广播里做耗时操作或者计算

/data/anr/traces.txt 文件,定位ANR发生的原因