目录:
[TOC]
Android基础
五大布局
-
请介绍下Android中常用的五种布局
五大布局是android最基本的布局:LinearLayout + RelativeLayout + FrameLayout + TableLayout + AbsoluteLayout。
比较常用的是LinearLayout + RelativeLayout + FrameLayout。
LinearLayout:线性布局,最重要的属性是android:orientation=”vertical”/”horizontal”
RelativeLayout:相对布局,需要设置把子控件位于父控件什么位置,常用的属性有:layout_alignParentXXX=””
FrameLayout:帧布局,它和RelativeLayout是允许控件重叠的。
TableLayout:表格布局,实际中基本不用
AbsoluteLayout:绝对布局,需要设置每个view的X/Y的坐标,实际中基本不用。
四大组件
Activity
- Activity的生命周期
生命周期 | 什么时候调用 |
---|---|
onCreate() | 加载布局和初始化的时候 |
onStart() | 可见但不可交互 |
onResume() | 可见可交互 |
onPause() | 可见不可交互 |
onStop() | 完全不可见 |
onDestroy() | 销毁activity |
onRestart() | 调用onStart() |
-
Activity的4种启动方式?并说明
需要在AndroidManifest.xml的activity节点下配置:android:launchMode=””
standard:activity实例重复创建。
singleTop:activity实例位于栈顶,只复用;不位于栈顶,则创建activity实例。所以,activity可能重复。
singleTask:一个activity类,任务栈中只允许一个对应的activity实例。位于栈顶,则复用;任务栈中没有,则创建;任务栈中有,但不位于栈顶,则把它拿到栈顶,它上面的实例全部清空,下面的实例不变。
singleInstance:一个任务栈中只允许一个activity实例。会单独创建一个任务栈管理这个activity实例。 -
如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
重写2个方法用于保存数据 和 恢复数据。见下面代码:onSavaInstanceState(bundle) + onRestoreInstanceState(bundle)。
onSavaInstanceState(…)是在onPause()方法后执行的,是被系统回收,不是调用了finish()。
onRestoreInstanceState(bundle)实在onStart()方法后执行的,比如屏幕的切换。
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
}
-
如何将一个Activity设置成窗口的样式?
在AndroidManifest.xml的activity节点设置主题theme为:
android:theme=”@android:style/Theme.Dialog” 或者:
android:theme=”@android:style/Theme.Translucent” -
如何退出Activity? 如何安全退出已调用多个Activity的Application?
如果是单一的activity,可以调用finish()方法退出。
如果是多个activity:- System.exit()或者killProcess()
- 发送广播退出:每个activity收到广播后调用finish()
- 遍历集合退出:将打开的activity存放在集合中,遍历集合执行finish()方法
-
被abstract修饰的activity需要在AndroidManifest.xml中配置吗?
不需要配置
BrocastReceiver
-
注册广播有几种方式,这些方式有何区别?
注册广播有2种方式,xml中注册和代码注册
区别:代码注册:app退出,广播失效。xml注册:app 退出,广播仍然有效。
Service
- service与intentservice的区别?
Android其它基础
-
Android的应用层?
1 android应用层:application
2 android框架层:framework
3 库文件+davik虚拟机
4 linux内核层 Android项目中assets目录有什么作用
用来存放外部资源,如音频/视频文件,这些资源会直接打到到apk中。
Android的5种数据存储方式?
1.SharePreference:一种常用的存储轻量级数据的存储方式,getSharePreference().edit().putString(…).commit; getString(…)
2.File文件存储到SD卡:采用IO流的方式存储数据,inputStream、outputStream
3.ContentProcider:将数据存储于内容提供者中。
4.Sqlite数据库:增删改查:insert()/delete/update()/query()
5.网络存储:
1.M:model模型;V:view视图;C:control控制器
2.model:对业务逻辑的操作代码放在这里,包含网络+数据库的操作
3.view:xml转化成的view,起到视图展示的作用
4.control:这一层的重任落在了activity上,这就要求activity不要写过多的代码,而是把这种业务操作放在model层。
1.基本的数据类型:string/int/float
2.bundle类型
3.序列化对象:serializable
4.parcelable
Android高级
自定义控件
-
View和viewgroup的绘制
自定义控件有关的3个方法onMesure() + onDraw() + onLayout()。
绘制view有关的方法onMesure() + onDraw() 。
绘制view有关的方法onMesure() + onDraw() + onLayout()。
onMesure() :功能是测量控件的宽高,比如scrollview嵌套listview的时候listview的item显示不正常,就需要在自定义的listview的类中重写onMesure()方法。
onDraw() :功能是绘制自定义的控件
onLayout():功能是摆放view。