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 接口挂断电话.
目录
相关文章
|
2月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
83 6
|
2月前
|
Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
2月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
|
2月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
27 3
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
25 2
|
2月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
53 1
|
2月前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
Android面试高频知识点(1) 图解 Android 事件分发机制
39 1
|
2月前
|
存储 缓存 网络协议
5个Android性能优化相关的深度面试题
本文涵盖五个Android面试题及其解答,包括优化应用启动速度、内存泄漏的检测与解决、UI渲染性能优化、减少内存抖动和内存溢出、优化网络请求性能。每个问题都提供了详细的解答和示例代码。
28 2
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制