面试年年有,今年特别多

面试内容可以大致分为几个模块:

一、.基础的关于Android 的理论知识点

二、新技术,新知识点的了解及运用

三、项目经验如何(主要是理解你都有哪些方面的一个工作经验)

有的公司是先笔试再面试,有的是直接就问你技术性的问题,不同的公司,面试的流程不同

  • Android 中的四大组件

1.activity

      (1)一个Activity通常就是一个单独的屏幕(窗口)。

       (2)Activity之间通过Intent进行通信。

       (3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。

2.service

(1)service用于在后台完成用户指定的操作。service分为两种:

              (a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。

              (b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。

       (2)startService()与bindService()区别:

              (a)started service(启动服务)是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。

              (b)使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

       (3)开发人员需要在应用程序配置文件中声明全部的service,使用标签。

       (4)Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

3.content provider

(1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。

       (2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。

       (3)ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。

       (4)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。

       (5)ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。

4.broadcast receiver

(1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

       (2)广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。

       (3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。

  • Android 界面布局方式

1.LinearLayout(线性布局)

LinearLayout容器中的组件一个挨一个排列,通过控制android:orientation属性,可控制各组件是横向排列还是纵向排列。

注意:这个两个属性的区别

xml属性  说明
android:gravity  表示当前view,即控件,内部的东西,对齐的方式 
android:layout_gravity  表示当前view,即控件,在父级内的对齐方式

2.TableLayout(表格布局)

TableLayout继承自Linearout,本质上仍然是线性布局管理器。表格布局采用行、列的形式来管理UI组件,并不需要明确地声明包含多少行、多少列,而是通过添加TableRow、其他组件来控制表格的行数和列数。

每向TableLayout中添加一个TableRow就代表一行;

每向TableRow中添加一个一个子组件就表示一列;

如果直接向TableLayout添加组件,那么该组件将直接占用一行;

3.FrameLayout(帧布局)

FrameLayout直接继承自ViewGroup组件。帧布局为每个加入其中的组件创建一个空白的区域(称为一帧),每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

4.RelativeLayout(相对布局)

RelativeLayout是一个以相对位置显示组件的布局。 每个组件的位置可以指定为相对于兄弟元素(例如,在另一个组件的左侧或下方)或相对于父级RelativeLayout区域的位置(例如,对齐到底部,左侧或中心)。

5.GridLayout(网格布局)

  GridLayout是Android4.0增加的网格布局控件,与之前的TableLayout有些相似,它把整个容器划分为rows × columns个网格,每个网格可以放置一个组件。性能及功能都要比tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。

GridLayout提供了setRowCount(int)和setColumnCount(int)方法来控制该网格的行和列的数量。

6.AbsoluteLayout(绝对布局)

即Android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。每个组件都可指定如下两个XML属性

7.ConstraintLayout(新布局:弹性布局)

ConstrainLayout是一个允许你用灵活的方法去设置你控件的位置和大小的ViewGroup。

优点

  • 使用根据灵活,可以一个布局就完成界面。不需要像以前那样,layout嵌套layout。
  • 很好的拖拉控件的支持。但是本文还是介绍代码的方式。
  • 只要android api超过9,添加依赖,就可以使用ConstrainLayout了。

更多相关文章

  1. Android(安卓)架构组件 - 让天下没有难做的 App
  2. 关于android service 重启
  3. Android的布局
  4. Android控件的使用
  5. Android(安卓)显示Intent和隐示Intent
  6. Anroid中的任务、进程和线程
  7. Android在一个应用中启动另外一个应用
  8. AndroidAZ系列:四大组件之Broadcast(All,Face)
  9. [原]Android应用程序在新的进程中启动新的Activity的方法和过程

随机推荐

  1. Android开发名词解释
  2. Android7.0系统应用包名信息
  3. Android使用GestureDetector实现手势滑动
  4. android重复的文件复制APK META-INF许可
  5. 安卓布局知识点
  6. 特朗普打压微信,苹果不好受
  7. Android(安卓)SDK Platform 4.4.2【离线
  8. Android多线程--HandlerThread用法
  9. IntentTest
  10. 获取mic音量大小