Android--面试题整理(三)

简介: 版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/51728596 21. 请描述一下BroadcastReceiver。
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/51728596

21. 请描述一下BroadcastReceiver。

 

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

广播分两种

有序广播

无序广播

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

<intent-filterandroid:priority="1000">

<actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

onReceive() 方法.

abortBroadcast();

 

有序广播有一个特例

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

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

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

   SetresultData(); 

Sticky

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

Wifi设置

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

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

<intent-filter android:> <action> sms_received </action>  </intent-filter>

 

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

 

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

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

sendBroadcast(intent);

 

 

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

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

详细见工程代码.

        <intent-filter android:priority="1000">

           <actionandroid:name="android.intent.action.NEW_OUTGOING_CALL"/>        

        </intent-filter>

       </receiver>

        <receiverandroid:name=".SmsReceiver">

            <intent-filterandroid:priority="1000">

                <actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/>

            </intent-filter>

        </receiver>

        <receiverandroid:name=".BootCompleteReceiver">

            <intent-filter>

                <actionandroid:name="android.intent.action.BOOT_COMPLETED" />     

                </intent-filter>

        </receiver>

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

        registerReceiver(receiver, filter);

 

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

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

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

   

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

    publicclass PersonContentProvider extends ContentProvider{

    publicboolean 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 

/data/data/包名/files内存里面

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

   

 

数据库 sqlite  

   

    SharedPreference  <data>/<data>/包名/shared_preps   Context.modeprivate

 

    网络  socket tcp 面向连接 打电话   udp  平信  udp, 

http  httpurlconnection 

Androidhttpclient  post get

ftp的网络  file transport protocol

 

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 320*240

 

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

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

android 2.2 2.3 2.3 sip 开发网络电话 session setup protocol  2.3 支持摄像头

Android 3.0 3.1 针对平板电脑 

分裂

4.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"  在父元素左对齐

android:layout_alignParentRight="true"在父元素右对齐

 

TableLayout <table>

表格布局类似Html里面的Table。每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素,设定他的对齐方式android:gravity="" 。

每一个布局都有自己适合的方式,另外,这五个布局元素可以相互嵌套应用,做出美观的界面。

oa  自动化 生成报表 ,图标 表示 

css div

webview

 

27. 谈谈UI中, Padding和Margin有什么区别?

Padding 文字对边框, margin是控件与控件之间的距离

28. widget相对位置的完成在activity的哪个生命周期阶段实现。

 这个题没看懂…

widget可以理解成桌面小控件,

也可以理解成 某个button, imageview这样的控件…

onmeasure() // 计算 控件在屏幕上的位子

某个view 要显示在界面  ondraw 被显示到界面上的

 

 

29. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。

Activity 里面默认会帮创建Looper

 

子线程里面显示土司

Looper.parepare();

Toast

Looper.loop();

 

 

30. AIDL的全称是什么?如何工作?

Android interface definition language (android接口定义语言) ,

用来跨进程的访问方法,

访问远程的服务的方法. 如何工作 day7  queryStudent . 

 .endcall();

手机卫士 Itelephony 接口挂断电话.
目录
相关文章
|
7月前
|
XML Java Android开发
Android面试官最喜欢问15道面试题
Android面试官最喜欢问15道面试题
85 0
|
7月前
|
存储 SQL 安全
Android面试中问的线程相关问题
Android面试中问的线程相关问题
39 0
|
11月前
|
搜索推荐 算法 Android开发
【Android面试】有1000个数,1000个数的大小范围是0-999,有两个相同的数字,请设计算法找出来
思路如下: 1000个数字只有两个相同的数字,那就是说把数组排序后,这两个数一定相邻。通过排序算法进行排序,在循环判断相邻的数即可。
189 0
|
7月前
|
网络协议 算法 安全
Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)
Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)
|
26天前
|
存储 安全 Java
Android 面试题及答案整理,最新面试题
Android 面试题及答案整理,最新面试题
32 2
|
7月前
|
程序员 数据库 Android开发
面试问你Android中Context,你如何回答?
面试问你Android中Context,你如何回答?
62 0
|
7月前
|
存储 算法 Java
Android 面试必备 - JVM 及 类加载机制
Android 面试必备 - JVM 及 类加载机制
|
8月前
|
Android开发
Android面试常客之Handler全解1
Android面试常客之Handler全解
|
7月前
|
SQL Java Linux
Android面试问题收集
Android面试问题收集
72 1
|
7月前
|
算法 网络协议 Java
Android面试知识点复习手册(收藏)
Android面试知识点复习手册(收藏)
82 0