课程咨询 : 010-57154533

主页 > 企业招聘 > 安卓笔试题 > Android面试题大全(5)
  • Android面试题大全(5)

    发布:鸿运彩票网      来源:鸿运彩票网      时间:2016-06-03 11:39

  •   14. 请介绍下Android中常用的五种布局。

      1、 LinearLayout – 线性布局。

      orientation – 容器内元素的排列方式。vertical: 子元素们垂直排列;horizontal: 子元素们水平排列

      gravity – 内容的排列形式。常用的有 top, bottom, left, right, center 等

      2、 AbsoluteLayout – 绝对布局。

      layout_x – x 坐标。以左上角为顶点

      layout_y – y 坐标。以左上角为顶点

      3、 TableLayout – 表格式布局

      表格布局主要以行列的形式来管理子控件,其中每一行即一个TableRow对象,每个TableRow对象可以添加子控件,并且每加入一个空间即相当于添加了一列

      4、 RelativeLayout – 相对布局。

      layout_centerInParent – 将当前元素放置到其容器内的水平方向和垂直方向的中央位置(类似的属性有 :layout_centerHorizontal, layout_alignParentLeft 等)

      layout_marginLeft – 设置当前元素相对于其容器的左侧边缘的距离

      layout_below – 放置当前元素到指定的元素的下面

      layout_alignRight – 当前元素与指定的元素右对齐

      5、 FrameLayout – 层叠布局。以左上角为起点,将 FrameLayout 内的元素一层覆盖一层地显示,在帧布局中,先添加的图片会被后添加的图片覆盖。

     

      15. 请介绍下Android的数据存储方式。

      Android提供了5种方式存储数据:

      1、使用SharedPreferences存储数据;

      2、文件存储数据;

      3、SQLite数据库存储数据;

      4、使用ContentProvider存储数据;

      5、网络存储数据;

      Android 中的数据存储都是私有的,其他应用程序都是无法访问的,除非通过ContentResolver获取其他程序共享的数据。

      

      16. 请介绍下ContentProvider是如何实现数据共享的。

      一个程序可以通过实现一个Content provider的抽象接口将自己的数据完全暴露出去,而且Content providers是以类似数据库中表的方式将数据暴露。Content providers存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。

      如何通过一套标准及统一的接口获取其他应用程序暴露的数据?Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。

      

      17. 如何启用Service,如何停用Service。

      1.第一种是通过调用Context.startService()启动,调用Context.stopService()结束,startService()可以传递参数给Service

      2.第二种方式是通过调用Context.bindService()启动,调用Context.unbindservice()结束,还可以通过ServiceConnection访问Service。

      在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

      

      18. 注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。

      Android中,不同进程之间传递信息要用到广播,可以有两种方式来实现。

      第一种方式:在Manifest.xml中注册广播,是一种比较推荐的方法,因为它不需要手动注销广播(如果广播未注销,程序退出时可能会出错)。

      具体实现在Manifest的application中添加:

      上面两个Android:name分别是广播名和广播的动作(这里的动作是表示系统启动完成),如果要自己发送一个广播,在代码中为:

      Intent i = new Intent(“Android.intent.action.BOOT_COMPLETED”);

      sendBroadcast(i);

      这样,广播就发出去了,然后是接收。

      接收可以新建一个类,继承至BroadcastReceiver,也可以建一个BroadcastReceiver的实例,然后得写onReceive方法,实现如下:

      protected BroadcastReceiver mEvtReceiver = new BroadcastReceiver() {

      @Override

      public void onReceive(Context context, Intent intent) {

      String action = intent.getAction();

      if (action.equals(“Android.intent.action.BOOT_COMPLETED”)) {

      //Do something

      }

      }

      };

      第二种方式,直接在代码中实现,但需要手动注册注销,实现如下:

      IntentFilter filter = new IntentFilter();

      filter.addAction(“Android.intent.action.BOOT_COMPLETED”);

      registerReceiver(mEvtReceiver, filter); //这时注册了一个recevier ,名为mEvtReceiver,然后同样用上面的方法以重写onReceiver,

      最后在程序的onDestroy中要注销广播,实现如下:

      @Override

      public void onDestroy() {

      super.onDestroy();

      unregisterReceiver(mPlayerEvtReceiver);

      }

      Android系统中的广播是广泛用于应用程序之间通信的一种手段,它类似于事件处理机制,不同的地方就是广播的处理是系统级别的事件处理过程(一般事件处理是控件级别的)。在此过程中仍然是离不开Intent对象,理解广播事件的处理过程,灵活运用广播处理机制,在关键之处往往能实现特别的效果,

      在Android 中如果要发送一个广播必须使用sendBroadCast 向系统发送对其感兴趣的广播接收器中。

      使用广播必须要有一个intent 对象必设置其action动作对象

      使用广播必须在配置文件中显式的指明该广播对象

      每次接收广播都会重新生成一个接收广播的对象

      在BroadCast 中尽量不要处理太多逻辑问题,建议复杂的逻辑交给Activity 或者 Service 去处理


上一篇:Android面试题大全(4)

下一篇:Android面试题大全(6)

最新开班日期

开班时间 2017/02/20
距离开班时间还剩

1 2 3
©2016 鸿运彩票网 版权所有 京ICP备15049804-3号