收藏 分销(赏)

Android关键技术面试整理附有详细答案包括百度新浪中科软等多家公司笔试面试题.doc

上传人:w****g 文档编号:2954767 上传时间:2024-06-12 格式:DOC 页数:47 大小:121.04KB
下载 相关 举报
Android关键技术面试整理附有详细答案包括百度新浪中科软等多家公司笔试面试题.doc_第1页
第1页 / 共47页
Android关键技术面试整理附有详细答案包括百度新浪中科软等多家公司笔试面试题.doc_第2页
第2页 / 共47页
Android关键技术面试整理附有详细答案包括百度新浪中科软等多家公司笔试面试题.doc_第3页
第3页 / 共47页
Android关键技术面试整理附有详细答案包括百度新浪中科软等多家公司笔试面试题.doc_第4页
第4页 / 共47页
Android关键技术面试整理附有详细答案包括百度新浪中科软等多家公司笔试面试题.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、前19题为常考题目!(版本号:08141031)1、Android四大组件是哪些,它们作用?32、请简介下Android中惯用五种布局。33、android中动画有哪几类,它们特点和区别是什么34、android 中有哪几种解析xml类?官方推荐哪种?以及它们原理和区别。35、ListView优化方案46、请简介下Android数据存储方式。47、activity启动模式有哪些?是什么含义?68、跟activity和Task 关于 Intent启动方式有哪些?其含义?79、请描述下Activity生命周期。910、activity在屏幕旋转时生命周期1011、如何启用Service,如何停用S

2、ervice。1012、注册广播有几种方式,这些方式有何优缺陷?请谈谈Android引入广播机制用意。1113、请解释下在单线程模型中Message、Handler、Message Queue、Looper之间关系。1114、简要解释一下activity、intent 、intent filter、service、Broadcase、BroadcaseReceiver1315、说说mvc模式原理,它在android中运用,android官方建议应用程序开发采用mvc模式。何谓mvc?1316、什么是ANR 如何避免它?1317、什么状况会导致Force Close ?如何避免?能否捕获导致其异

3、常?1418、描述一下android系统架构1419、请简介下ContentProvider是如何实现数据共享。1420、Android自身api并未声明会抛出异常,则其在运营时有无也许抛出runtime异常,你遇到过吗?诺有话会导致什么问题?如何解决?1521、IntentService有何长处?1522、如果后台Activity由于某因素被系统回收了,如何在被系统回收之前保存当前状态?1523、如何将一种Activity设立成窗口样式。1524、如何退出Activity?如何安全退出已调用各种ActivityApplication?1525、AIDL全称是什么?如何工作?能解决哪些类型数据

4、?1626、请解释下Android程序运营时权限与文献系统权限区别。1727、系统上安装了各种浏览器,能否指定某浏览器访问指定页面?请阐明原由。1728、android系统优势和局限性1729、Android dvm进程和Linux进程,应用程序进程与否为同一种概念1830、sim卡EF文献是什么?有何作用1831、嵌入式操作系统内存管理有哪几种, 各有何特性1832、什么是嵌入式实时操作系统,Android 操作系统属于实时操作系统吗?1833、一条最长短信息约占多少byte?1834、有一种一维整型数组intdata保存是一张宽为width,高为height图片像素值信息。请写一种算法,将

5、该图片所有白色不透明(0xffffffff)像素点透明度调节为50%。1835、如何将SQLite数据库(dictionary.db文献)与apk文献一起发布1936、如何将打开res aw目录中数据库文献?1937、DDMS和TraceView区别?1938、java中如何引用本地语言1939、谈谈AndroidIPC(进程间通信)机制1940、NDK是什么191、 Android四大组件是哪些,它们作用?答:Activity:Activity是Android程序与顾客交互窗口,是Android构造块中最基本一种,它需要为保持各界面状态,做诸多持久化事情,妥善管理生命周期以及某些跳转逻辑se

6、rvice:后台服务于Activity,封装有一种完整功能逻辑实现,接受上层指令,完毕有关事物,定义好需要接受Intent提供同步和异步接口Content Provider:是Android提供第三方应用数据访问方案,可以派生Content Provider类,对外提供数据,可以像数据库同样进行选取排序,屏蔽内部数据存储细节,向外提供统一接口模型,大大简化上层应用,对数据整合提供了更以便途径BroadCast Receiver:接受一种或者各种Intent作触发事件,接受有关消息,做某些简朴解决,转换成一条Notification,统一了Android事件广播模型2、 请简介下Android中

7、惯用五种布局。惯用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简朴,也只能放一点比较简朴东西。二、LinearLayout:线性布局,每一种LinearLayout里面又可分为垂直布局(android:orientation=vertical)和水平布局(android:orientation=horizontal )。当垂直布局时,每一行就只有一种

8、元素,各种元素依次垂直往下;水平布局时,只有一行,每一种元素依次向右排列。三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素位置,这种布局方式也比较简朴,但是在屏幕旋转时,往往会出问题,并且各种元素时候,计算比较麻烦。四、RelativeLayout:相对布局可以理解为某一种元素为参照物,来定位布局方式。重要属性有:相对于某一种元素android:layout_below、 android:layout_toLeftOf相对于父元素地方android:layout_alignParentLeft、android:layout_alignParentRigh;五、TableLayo

9、ut:表格布局,每一种TableLayout里面有表格行TableRow,TableRow里面可以详细定义每一种元素。每一种布局均有自己适合方式,这五个布局元素可以互相嵌套应用,做出美观界面。3、 android中动画有哪几类,它们特点和区别是什么 答:两种,一种是Tween动画、尚有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度变化;另一种Frame动画,老式动画办法,通过顺序播放排列好图片来实现,类似电影。4、 android 中有哪几种解析xml类?官方推荐哪种?以及它们原理和区别。答:XML解析重要有三种方式,SAX、DOM、PULL。常

10、规在PC上开发咱们使用Dom相对轻松些,但某些性能敏感数据库或手机上还是重要采用SAX方式,SAX读取是单向,长处:不占内存空间、解析属性以便,但缺陷就是对于套嵌各种分支来说解决不是很以便。而DOM方式会把整个XML文献加载到内存中去,该办法在查找方面可以和XPath较好结合如果数据量不是很大推荐使用,而PULL常惯用在J2ME对于节点解决比较好,类似SAX方式,同样很节约内存,在J2ME中咱们经常使用KXML库来解析。5、 ListView优化方案答:1、如果自定义适配器,那么在getView办法中要考虑办法传进来参数contentView与否为null,如果为null就创立contentV

11、iew并返回,如果不为null则直接使用。在这个办法中尽量少创立view。2、给contentView设立tag(setTag(),传入一种viewHolder对象,用于缓存要显示数据,可以达到图像数据异步加载效果。3、如果listview需要显示item诸多,就要考虑分页加载。例如一共要显示100条或者更多时候,咱们可以考虑先加载20条,等顾客拉到列表底部时候再去加载接下来20条。6、 请简介下Android数据存储方式。答:使用SharedPreferences存储数据;文献存储数据;SQLite数据库存储数据;使用ContentProvider存储数据;网络存储数据;Preference

12、,File, DataBase这三种方式分别相应目录是/data/data/Package Name/Shared_Pref,/data/data/Package Name/files,/data/data/Package Name/database 。一:使用SharedPreferences存储数据一方面阐明SharedPreferences存储方式,它是 Android提供用来存储某些简朴配备信息一种机制,例如:登录顾客顾客名与密码。其采用了Map数据构造来存储数据,以键值方式存储,可以简朴读取与写入,详细实例如下:void ReadSharedPreferences()String s

13、trName,strPassword;SharedPreferences user = getSharedPreferences(“user_info”,0);strName = user.getString(“NAME”,”);strPassword = user getString(“PASSWORD”,”);void WriteSharedPreferences(String strName,String strPassword)SharedPreferences user = getSharedPreferences(“user_info”,0);uer.edit();user.put

14、String(“NAME”,strName);user.putString(“PASSWORD” ,strPassword);mit();数据读取与写入办法都非常简朴,只是在写入时候有些区别:先调用edit()使其处在编辑状态,然后才干修改数据,最后使用commit()提交修改数据。事实上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中File Explorer中/data/data/shares_prefs下。使用SharedPreferences是有些限制:只能在同一种包内使用,不能在不同包之间使用。二:文献存储数据文献存储方式是一种较惯用办法,在And

15、roid中读取/写入文献办法,与 Java中实现I/O程序是完全同样,提供了openFileInput()和openFileOutput()办法来读取设备上文献。详细实例如下:String fn = “moandroid.log”;FileInputStream fis = openFileInput(fn);FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATE);三:网络存储数据网络存储方式,需要与Android 网络数据包打交道,关于Android 网络数据包详细阐明,请阅读Android SDK引用了Java SDK哪

16、些package?。四:ContentProvider1、ContentProvider简介当应用继承ContentProvider类,并重写该类用于提供数据和存储数据办法,就可以向其她应用共享其数据。虽然使用其她办法也可以对外共享数据,但数据访问方式会因数据存储方式而不同,如:采用文献方式对外共享数据,需要进行文献操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据好处是统一了数据访问方式。2、Uri类简介Uri代表了要操作数据,Uri重要包括了两某些信息:1.需要操作Conte

17、ntProvider ,2.对ContentProvider中什么数据进行操作,一种Uri由如下几某些构成:1.scheme:ContentProvider(内容提供者)scheme已经由Android所规定为:content:/2.主机名(或Authority):用于唯一标记这个ContentProvider,外部调用者可以依照这个标记来找到它。3.途径(path):可以用来表达咱们要操作数据,途径构建应依照业务而定,如下:要操作contact表中id为10记录,可以构建这样途径:/contact/10要操作contact表中id为10记录name字段, contact/10/name要操作

18、contact表中所有记录,可以构建这样途径:/contact?要操作数据不一定来自数据库,也可以是文献等她存储方式,如下:要操作xml文献中contact节点下name节点,可以构建这样途径:/contact/name如果要把一种字符串转换成Uri,可以使用Uri类中parse()办法,如下:Uri uri = Uri.parse(content:/com.changcheng.provider.contactprovider/contact)3、UriMatcher、ContentUrist和ContentResolver简介由于Uri代表了要操作数据,因此咱们很经常需要解析Uri,并从

19、Uri中获取数据。Android系统提供了两个用于操作Uri工具类,分别为UriMatcher 和ContentUris 。掌握它们使用,会便于咱们开发工作。UriMatcher:用于匹配Uri,它用法如下:1.一方面把你需要匹配Uri途径所有给注册上,如下:/常量UriMatcher.NO_MATCH表达不匹配任何途径返回码(-1)。UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);/如果match()办法匹配content:/com.changcheng.sqlite.provider.contactprovider /

20、contact途径,返回匹配码为1uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”,“contact”,1);/添加需要匹配uri,如果匹配就会返回匹配码/如果match()办法匹配 content:/com.changcheng.sqlite.provider.contactprovider/contact/230途径,返回匹配码为2uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”,“contact/#”,2);/#号为通配符

21、2.注册完需要匹配Uri后,就可以使用uriMatcher.match(uri)办法对输入Uri进行匹配,如果匹配就返回匹配码,匹配码是调用 addURI()办法传入第三个参数,假设匹配 content:/com.changcheng.sqlite.provider.contactprovider/contact途径,返回匹配码为1。ContentUris:用于获取Uri途径背面ID某些,它有两个比较实用办法:withAppendedId(uri,id)用于为途径加上ID某些parseId(uri)办法用于从途径中获取ID某些ContentResolver:当外部应用需要对ContentPro

22、vider中数据进行添加、删除、修改和查询操作时,可以使用 ContentResolver 类来完毕,要获取ContentResolver 对象,可以使用Activity提供getContentResolver()办法。 ContentResolver使用insert、delete、update、query办法,来操作数据。7、 activity启动模式有哪些?是什么含义?答:在android里,有4种activity启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance”它们重要有如下不同:1. 如何决定所属tas

23、k “standard”和”singleTop”activity目的task,和收到Intent发送者在同一种task内,除非intent涉及参数FLAG_ACTIVITY_NEW_TASK。 如果提供了FLAG_ACTIVITY_NEW_TASK参数,会启动到别task里。 “singleTask”和”singleInstance”总是把activity作为一种task根元素,她们不会被启动到一种其她task里。2. 与否容许各种实例 “standard”和”singleTop”可以被实例化多次,并且存在于不同task中,且一种task可以涉及一种activity各种实例; “singleT

24、ask”和”singleInstance”则限制只生成一种实例,并且是task根元素。 singleTop规定如果创立intent时候栈顶已有要创立 Activity实例,则将intent发送给该实例,而不发送给新实例。3. 与否容许其他activity存在于本task内 “singleInstance”独占一种task,其他activity不能存在那个task里;如果它启动了一种新activity,不论新activitylaunch mode 如何,新activity都将会到别task里运营(犹如加了FLAG_ACTIVITY_NEW_TASK参数)。 而此外三种模式,则可以和其他activ

25、ity共存。4. 与否每次都生成新实例 “standard”对于没一种启动Intent都会生成一种activity新实例; “singleTop”activity如果在task栈顶话,则不生成新该activity实例,直接使用栈顶实例,否则,生成该activity实例。 例如当前task栈元素为A-B-C-D(D在栈顶),这时候给D发一种启动intent,如果D是 “standard”,则生成D一种新实例,栈变为ABCDD。 如果D是singleTop话,则不会生产D新实例,栈状态仍为A-B-C-D 如果这时候给B发Intent话,不论Blaunchmode是”standard” 还是 “si

26、ngleTop” ,都会生成B新实例,栈状态变为A-B-C-D-B。“singleInstance”是其所在栈唯一activity,它会每次都被重用。“singleTask”如果在栈顶,则接受intent,否则,该intent会被丢弃,但是该task仍会回到前台。当已经存在activity实例解决新intent时候,会调用onNewIntent()办法 如果收到intent生成一种activity实例,那么顾客可以通过back键回到上一种状态;如果是已经存在一种activity来解决这个intent话,顾客不能通过按back键返回到这之前状态。8、 跟activity和Task 关于 Inte

27、nt启动方式有哪些?其含义?核心Intent Flag有: FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_RESET_TASK_IF_NEEDED FLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_NEW_TASK 如果设立,这个Activity会成为历史stack中一种新Task开始。一种Task(从启动它Activity到下一种Task中 Activity)定义了顾客可以迁移Activity原子组。Task可以移动到前台和后台;在某个特定Task中所有Activity总是保持相似顺序。 这

28、个标志普通用于呈现“启动”类型行为:它们提供顾客一系列可以单独完毕事情,与启动它们Activity完全无关。 使用这个标志,如果正在启动ActivityTask已经在运营话,那么,新Activity将不会启动;代替,当前Task会简朴移入前台。参照FLAG_ACTIVITY_MULTIPLE_TASK标志,可以禁用这一行为。 这个标志不能用于调用方对已经启动Activity祈求成果。FLAG_ACTIVITY_CLEAR_TOP 如果设立,并且这个Activity已经在当前Task中运营,因而,不再是重新启动一种这个Activity实例,而是在这个Activity上方所有Activity都将关

29、闭,然后这个Intent会作为一种新Intent投递到老Activity(当前位于顶端)中。 例如,假设一种Task中包括这些Activity:A,B,C,D。如果D调用了startActivity(),并且包括一种指向Activity BIntent,那么,C和D都将结束,然后B接受到这个Intent,因而,当前stack状况是:A,B。 上例中正在运营Activity B既可以在onNewIntent()中接受到这个新Intent,也可以把自己关闭然后重新启动来接受这个Intent。如果它启动模式声明为 “multiple”(默认值),并且你没有在这个Intent中设立FLAG_ACTIV

30、ITY_SINGLE_TOP标志,那么它将关闭然后重新创立;对于其他启动模式,或者在这个Intent中设立FLAG_ACTIVITY_SINGLE_TOP标志,都将把这个Intent投递到当前这个实例onNewIntent()中。 这个启动模式还可以与FLAG_ACTIVITY_NEW_TASK结合起来使用:用于启动一种Task中根Activity,它会把那个Task中任何运营实例带入前台,然后清除它直到根Activity。这非常有用,例如,当从Notification Manager处启动一种Activity。 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 如果设立这

31、个标志,这个activity不论是从一种新栈启动还是从已有栈推到栈顶,它都将以the front door of the task方式启动。这就讲导致任何与应用有关栈都讲重置到正常状态(不论是正在讲activity移入还是移除),如果需要,或者直接重置该栈为初始状态。FLAG_ACTIVITY_SINGLE_TOP 如果设立,当这个Activity位于历史stack顶端运营时,不再启动一种新FLAG_ACTIVITY_BROUGHT_TO_FRONT 这个标志普通不是由程序代码设立,如在launchMode中设立singleTask模式时系统帮你设定。 FLAG_ACTIVITY_CLEAR_

32、WHEN_TASK_RESET 如果设立,这将在TaskActivity stack中设立一种还原点,当Task恢复时,需要清理Activity。也就是说,下一次Task带着 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标记进入前台时(典型操作是顾客在主画面重启它),这个Activity和它之上都将关闭,以至于顾客不能再返回到它们,但是可以回到之前Activity。 这在你程序有分割点时候很有用。例如,一种e-mail应用程序也许有一种操作是查看一种附件,需要启动图片浏览Activity来显示。这个 Activity应当作为e-mail应用程序Task一某些,由于这是顾

33、客在这个Task中触发操作。然而,当顾客离开这个Task,然后从主画面选取e-mail app,咱们也许但愿回到查看会话中,但不是查看图片附件,由于这让人困惑。通过在启动图片浏览时设定这个标志,浏览及其他启动Activity在下次顾客返回到mail程序时都将所有清除。 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 如果设立,新Activity不会在近来启动Activity列表中保存。 FLAG_ACTIVITY_FORWARD_RESULT 如果设立,并且这个Intent用于从一种存在Activity启动一种新Activity,那么,这个作为答复目的Activity将会

34、传到这个新Activity中。这种方式下,新Activity可以调用setResult(int),并且这个成果值将发送给那个作为答复目的 Activity。 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 这个标志普通不由应用程序代码设立,如果这个Activity是从历史记录里启动(常按HOME键),那么,系统会帮你设定。 FLAG_ACTIVITY_MULTIPLE_TASK 不要使用这个标志,除非你自己实现了应用程序启动器。与FLAG_ACTIVITY_NEW_TASK结合起来使用,可以禁用把已存Task送入前台行为。当设立时,新Task总是会启动来解决Intent

35、,而不论这是与否已有一种Task可以解决相似事情。 由于默认系统不包括图形Task管理功能,因而,你不应当使用这个标志,除非你提供应顾客一种方式可以返回到已经启动Task。 如果FLAG_ACTIVITY_NEW_TASK标志没有设立,这个标志被忽视。 FLAG_ACTIVITY_NO_ANIMATION 如果在Intent中设立,并传递给Context.startActivity()话,这个标志将制止系统进入下一种Activity时应用 Acitivity迁移动画。这并不意味着动画将永不运营如果另一种Activity在启动显示之前,没有指定这个标志,那么,动画将被应用。这个标志可以较好用于执

36、行一连串操作,而动画被看作是更高一级事件驱动。 FLAG_ACTIVITY_NO_HISTORY 如果设立,新Activity将不再历史stack中保存。顾客一离开它,这个Activity就关闭了。这也可以通过设立noHistory特性。 FLAG_ACTIVITY_NO_USER_ACTION 如果设立,作为新启动Activity进入前台时,这个标志将在Activity暂停之前制止从最前方Activity回调onUserLeaveHint()。 典型,一种Activity可以依赖这个回调指明显式顾客动作引起Activity移出后台。这个回调在Activity生命周期中标记一种适当点,并关闭某

37、些Notification。 如果一种Activity通过非顾客驱动事件,如来电或闹钟,启动,这个标志也应当传递给Context.startActivity,保证暂停Activity不以为顾客已经知晓其Notification。 FLAG_ACTIVITY_PREVIOUS_IS_TOP If set and this intent is being used to launch a new activity from an existing one,the current activity will not be counted as the top activity for decidin

38、g whether the new intent should be delivered to the top instead of starting a new one. The previous activity will be used as the top,with the assumption being that the current activity will finish itself immediately. FLAG_ACTIVITY_REORDER_TO_FRONT 如果在Intent中设立,并传递给Context.startActivity(),这个标志将引起已经运营

39、Activity移动到历史stack顶端。 例如,假设一种Task由四个Activity构成:A,B,C,D。如果D调用startActivity()来启动Activity B,那么,B会移动到历史stack顶端,当前顺序变成A,C,D,B。如果FLAG_ACTIVITY_CLEAR_TOP标志也设立话,那么这个标志将被忽视。 9、 请描述下Activity生命周期。答:activity生命周期办法有:onCreate()、onStart()、onReStart()、onResume()、onPause()、onStop()、onDestory();可见生命周期:从onStart()直到系统调

40、用onStop()前台生命周期:从onResume()直到系统调用onPause()10、 activity在屏幕旋转时生命周期答:不设立Activityandroid:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次;设立Activityandroid:configChanges=orientation时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次;设立Activityandroid:configChanges=orientation|keyboardHidden时,切屏不会重新调用各个生命周期,只会执行onConfigurati

41、onChanged办法11、 如何启用Service,如何停用Service。服务开发比较简朴,如下:第一步:继承Service类public class SMSService extends Service 第二步:在AndroidManifest.xml文献中节点里对服务进行配备:服务不能自己运营,需要通过调用Context.startService()或Context.bindService()办法启动服务。这两个办法都可以启动Service,但是它们使用场合有所不同。使用startService()办法启用服务,调用者与服务之间没关于连,虽然调用者退出了,服务依然运营。使用bindSe

42、rvice()办法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终结,大有“不求同步生,必要同步死”特点。如果打算采用Context.startService()办法启动服务,在服务未被创立时,系统会先调用服务onCreate()办法,接着调用onStart()办法。如果调用startService()办法前服务已经被创立,多次调用startService()办法并不会导致多次创立服务,但会导致多次调用onStart()办法。采用startService()办法启动服务,只能调用Context.stopService()办法结束服务,服务结束时会调用onDestroy()办法。如

43、果打算采用Context.bindService()办法启动服务,在服务未被创立时,系统会先调用服务onCreate()办法,接着调用onBind()办法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务onUnbind()办法,接着调用onDestroy()办法。如果调用bindService()办法前服务已经被绑定,多次调用bindService()办法并不会导致多次创立服务及绑定(也就是说onCreate()和onBind()办法并不会被多次调用)。如果调用者但愿与正在绑定服务解除绑定,可以调用unbindService()办法,调用该办法也会导致系统调用服务onUnbi

44、nd()-onDestroy()办法。服务惯用生命周期回调办法如下: onCreate() 该办法在服务被创立时调用,该办法只会被调用一次,无论调用多少次startService()或bindService()办法,服务也只被创立一次。onDestroy()该办法在服务被终结时调用。与采用Context.startService()办法启动服务关于生命周期办法onStart() 只有采用Context.startService()办法启动服务时才会回调该办法。该办法在服务开始运营时被调用。多次调用startService()办法尽管不会多次创立服务,但onStart() 办法会被多次调用。与采

45、用Context.bindService()办法启动服务关于生命周期办法onBind()只有采用Context.bindService()办法启动服务时才会回调该办法。该办法在调用者与服务绑定期被调用,当调用者与服务已经绑定,多次调用Context.bindService()办法并不会导致该办法被多次调用。onUnbind()只有采用Context.bindService()办法启动服务时才会回调该办法。该办法在调用者与服务解除绑定期被调用12、 注册广播有几种方式,这些方式有何优缺陷?请谈谈Android引入广播机制用意。答:一方面写一种类要继承BroadcastReceiver第一种:在清

46、单文献中声明,添加 action android:name=android.provider.Telephony.SMS_RECEIVED)第二种使用代码进行注册如:IntentFilter filter = new IntentFilter(android.provider.Telephony.SMS_RECEIVED);IncomingSMSReceiver receiver = new IncomgSMSReceiver();registerReceiver(receiver.filter);两种注册类型区别是:1)第一种不是常驻型广播,也就是说广播跟随程序生命周期。2)第二种是常驻型,

47、也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运营。13、 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间关系。答:简朴说,Handler获取当前线程中looper对象,looper用来从存储MessageMessageQueue中取出Message,再有Handler进行Message分发和解决.Message Queue(消息队列):用来存储通过Handler发布消息,普通附属于某一种创立它线程,可以通过Looper.myQueue()得到当前线程消息队列Handler:可以发布或者解决一种消息或者操作一种Runnable,通过Handler发布消息,消息将只会发送到与它关联消息队列,然也只能解决该消息队列中消息Looper:是Handler和消

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服