我要投稿 投诉建议

android面试题(4)

时间:2021-02-19 10:25:34 面试试题 我要投稿

android面试题

  19. Intent传递数据时,可以传递哪些类型数据?

  1.一般的基本数据类型 Intent .putextra() intent.getStringextra();

  2.数据的uri, intent.setData() intent.getData();

  20. 说说Activity,Intent,Service是什么关系 。

  麦当劳和麦当娜的关系是什么关系?

  这种问题,就讲下activity,讲一下service,说一下 通过intent去激活组件,传递数据.

  说自己项目中有这样一个网络更新的功能,显示界面就用的activity, 后台有个service每隔半小时都去访问下服务器获取更新的数据…

  开启服务用的是intent来开启

  21. 请描述一下Broadcast Receiver。

  有很多广播接收者 ,系统已经实现了.

  广播分两种

  有序广播

  无序广播

  指定接收者的广播 . 是不可以被拦截掉的

  onReceive() 方法.

  abortBroadcast();

  有序广播有一个特例

  sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras);

  resultReceiver 广播接受者 如果我们显示的指定了广播接收者

  无论如何 都会接受广播 时间 abortBroadcast(); 的方法不会终止广播时间

  Sticky

  sendStickyBroadcast(intent) // 阴魂不散的广播

  Wifi设置

  用于接收系统的广播通知, 系统会有很多sd卡挂载,手机重启,广播通知,低电量,来短信等,一个apk的安装成功….

  手机卫士中自定义一个broadcast receiver

  sms_received

  来获取短信到来的广播, 根据黑名单来判断是否拦截该短信.

  画画板生成图片后,发送一个sd挂载的通知,通知系统的gallery去获取到新的图片.

  Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse(" file://"+Environment.getExternalStorageDirectory ()));

  sendBroadcast(intent);

  22. 在manifest和代码中如何注册和使 用 broadcast receiver 。

  设置广播接收者的优先级,设置广播接受者的action名字 等…

  详细见工程代码.

  代码中注册,如果代码没有执行,就接受不到广播事件

  registerReceiver(receiver, filter)

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

  把自己的数据通过uri的形式共享出去

  android 系统下 不同程序 数据默认是不能共享访问

  需要去实现一个类去继承ContentProvider

  public class PersonContentProvider extends ContentProvider{

  public boolean onCreate(){

  //..

  }

  query(Uri, String[], String, String[], String)

  insert(Uri, ContentValues)

  update(Uri, ContentValues, String, String[])

  delete(Uri, String, String[])

  }

  content:// 代表contentprovider

  技巧: 1.看urlmarcher.

  2. 根据匹配码 查看增删改查的具体实现

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

  文件 访问权限. sdcard

  / context.openFileInput(name) 默认是私有的访问权限

  数据库 sqlite

  网络 socket tcp udp ,

  http httpurlconnection

  ftp的网络

  25. 为什么要用ContentProvider?它和sql的实现上有什么差别?

  屏蔽数据存储的细节,对用户透明,用户只需要关心操作数据的uri就可以了,对应的参数 .

  不同app之间共享,操作数据

  但是contentprovider 还可以去增删改查本地文件. xml文件的读取,更改,

  网络数据读取更改

  Sql也有增删改查的方法.

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

  FrameLayout(帧布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)

  FrameLayout

  从屏幕的左上角开始布局,叠加显示, 实际应用 播放器的暂停按钮.

  LinearLayout

  线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每一个LinearLayout里面又可分为垂直布局

  (android:orientation="vertical")和水平布局(android:orientation="horizontal"

  )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。

  AbsoluteLayout

  绝对布局犹如div指定了absolute属性,用X,Y坐标来指定元素的位置android:layout_x="20px"

  android:layout_y="12px"

  qq斗地主 qq游戏大厅 800*480 800*480.apk fwvga 854*480

  指定平板机型的游戏开发中经常用到绝对布局 widget 绝对布局

  指定机型的平板游戏开发. 2.3 3.0

  1. 界面布局 任务管理器 gridview

  2. 手机 任务管理 listview

  lephone

  lepad

  RelativeLayout

  相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:

  相对于某一个元素

  android:layout_below="@id/aaa" 该元素在 id为aaa的下面

  android:layout_toLeftOf="@id/bbb" 改元素的左边是bbb

  相对于父元素的地方

  android:layout_alignParentLeft="true" 在父元素左对齐