1.Android四大组件以及做用???android
Activity:Activity是Android程序与用户实现交互的窗口,是Android中最重要的一中,它须要保存各界面的状态,作不少持久化的事情。
Service:运行与后台服务于Activity,定义好接受的Intent提供同步和异步的接口。
Content Provider:
BroadCast Receiver:
2.Android中经常使用的五中布局???数据库
FrameLayout: 框架布局 LinearLayout:线性布局
AbsolueLayout:绝对布局 RelativeLayout:相对布局
TableLayout:表格布局
3.Android 中动画有哪几类???它们的特色和区别是什么???数组
两类,一类是Tween动画、另外一类是Frame动画。
Tween动画,实现方式可使视图组件移动、放大、缩小以及产生透明度的变化。
Frame动画,经过必定的顺序来播放一组图片,(如gif图)。
4.Android中Listview优化方案???缓存
若是是自定义适配器,那么在getView方法中考虑传进来额参数contenView是否为null,若是不为null则直接使用,尽可能减小view的建立。
给contentView设置tag(setTag()),传入viewHolaer对象,用于缓存要显示的数据,能够达到图像数据的异步加载。
若是Listview须要显示的item比较多时,就要考虑数据的分页加载,根据需求去对应加载数据。
5.ArrayList与LinkedList的区别和适用场景???网络
Arraylist:
优势:ArrayList是实现了基于动态数组的数据结构,由于地址连续,一旦数据存储好了,查询操做效率会比较高(在内存里是连着放的)。
缺点:由于地址连续, ArrayList要移动数据,因此插入和删除操做效率比较低。
LinkedList:
优势:LinkedList基于链表的数据结构,地址是任意的,因此在开辟内存空间的时候不须要等一个连续的地址,对于新增和删除操做add和remove,LinedList比较占优点。LinkedList 适用于要头尾操做或插入指定位置的场景。
缺点:由于LinkedList要移动指针,因此查询操做性能比较低。
适用场景分析: 当须要对数据进行对此访问的状况下选用ArrayList,当须要对数据进行屡次增长删除修改时采用LinkedList。
6.View的绘制流程???数据结构
View的绘制流程:OnMeasure()——>OnLayout()——>OnDraw()
各步骤的主要工做:
OnMeasure():
测量视图大小。从顶层父View到子View递归调用measure方法,measure方法又回调OnMeasure。 OnLayout():
肯定View位置,进行页面布局。从顶层父View向子View的递归调用view.layout方法的过程,即父View根据上一步measure子View所获得的布局大小和布局参数,将子View放在合适的位置上。
OnDraw():
绘制视图:ViewRoot建立一个Canvas对象,而后调用OnDraw()。六个步骤:①、绘制视图的背景;②、保存画布的图层(Layer);③、绘制View的内容;④、绘制View子视图,若是没有就不用;⑤、还原图层(Layer);⑥、绘制滚动条。
7.activity的生命周期???框架
Activity生命周期方法主要有onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()和onRestart()方法。 启动一个A Activity,分别执行onCreate()、onStart()、onResume()方法。 从A Activity打开B Activity分别执行A onPause()、B onCreate()、B onStart()、B onResume()、A onStop()方法。 关闭B Activity,分别执行B onPause()、A onRestart()、A onStart()、A onResume()、B onStop()、B onDestroy()方法。 横竖屏切换A Activity,清单文件中不设置android:configChanges属性时,先销毁onPause()、onStop()、onDestroy()再从新建立onCreate()、onStart()、onResume()方法,设置orientation|screenSize(必定要同时出现)属性值时,不走生命周期方法,只会执行onConfigurationChanged()方法。 Activity之间的切换能够看出onPause()、onStop()这两个方法比较特殊,切换的时候onPause()方法不要加入太多耗时操做不然会影响体验。
8.android的数据存储???异步
使用SharedPreferences存储数据;它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中。只能在同一个包内使用,不能在不一样的包之间使用。 文件存储数据;文件存储方式是一种较经常使用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是彻底同样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。 SQLite数据库存储数据;SQLite是Android所带的一个标准的数据库,它支持SQL语句,它是一个轻量级的嵌入式数据库。 使用ContentProvider存储数据;主要用于应用程序之间进行数据交换,从而可以让其余的应用保存或读取此Content Provider的各类数据类型。 网络存储数据;经过网络上提供给咱们的存储空间来上传(存储)和下载(获取)咱们存储在网络空间中的数据信息。
9.Activity启动模式???ide
standard:标准模式,也是系统默认的启动模式。假如 activity A 启动了 activity B , activity B 则会运行在 activity A 所在的任务栈中。并且每次启动一个 Activity ,都会从新建立新的实例,无论这个实例在任务中是否已经存在。
singleTop:栈顶复用模式。假如 activity A 启动了 activity B ,就会判断 A 所在的任务栈栈顶是不是 B 的实例。若是是,则不建立新的 activity B 实例而是直接引用这个栈顶实例,同时 onNewIntent 方法会被回调,经过该方法的参数能够取得当前请求的信息;若是不是,则建立新的 activity B 实例。
singleTask:栈内复用模式。在第一次启动这个 Activity 时,系统便会建立一个新的任务,而且初始化 Activity 的实例,放在新任务的底部。不过须要知足必定条件的。那就是须要设置 taskAffinity 属性。
singleInstance:单实例模式。这个是 singleTask 模式的增强版,它除了具备 singleTask 模式的全部特性外,它还有一点独特的特性,那就是此模式的 Activity 只能单独地位于一个任务栈,不与其余 Activity 共存于同一个任务栈。
10.广播注册???布局
首先写一个类要继承BroadCastReceiver 第一种:在清单文件中声明,添加 第二种:使用代码进行注册如: <receive android :name ="BroadCastReceiverDemo"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"> </intent-filter> </receiver> 第二种:使用代码进行注册如: IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); BroadCastReceiverDemo receiver = new BroadCastReceiver(); registerReceiver(receiver, filter); 两种注册类型的区别是: 第一种是常驻型广播,也就是说当应用程序关闭后,若是有信息广播来,程序也会被系统调用自动运行。 第二种不是常驻广播,也就是说广播跟随程序的生命周期。