Android面试题(二):Android

时间:2022-07-27 17:48:55

目录:
[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()

Android面试题(二):Android

  • 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:

    1. System.exit()或者killProcess()
    2. 发送广播退出:每个activity收到广播后调用finish()
    3. 遍历集合退出:将打开的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.网络存储:

  • MVC模式?
    1.M:model模型;V:view视图;C:control控制器
    2.model:对业务逻辑的操作代码放在这里,包含网络+数据库的操作
    3.view:xml转化成的view,起到视图展示的作用
    4.control:这一层的重任落在了activity上,这就要求activity不要写过多的代码,而是把这种业务操作放在model层。
  • 用intent传递数据?
    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。