2011Android术面试整理下详细答案(包括百度、新浪、中科软等多下企业笔试面试题)

1、      Android的季非常组件是哪头,它们的企图?… 3

2、      请介绍下Android中常用之五种布局。… 3

3、      android中之卡通片有啊几近似,它们的特色和区别是呀… 3

4、      android
中产生哪几种解析xml的接近?官方推荐哪种?以及它的规律同区别。
… 3

5、      ListView的优化方案… 4

6、      请介绍下Android的数量存储方。… 4

7、      activity的启动模式发生什么样?是呀意义?… 6

8、       跟activity和Task 有关的 Intent启动方式发出什么?其义?
7

9、      请描述下Activity的生命周期。… 9

10、        activity在屏幕旋转时的生命周期… 10

11、        如何启用Service,如何停用Service。… 10

12、       
注册广播有几乎种植方法,这些主意产生哪优缺点?请谈谈Android引入广播机制的企图。
   
    11

13、        请解释下于单线程模型中Message、Handler、Message
Queue、Looper之间的涉嫌。
        11

14、        简要解释一下activity、 intent 、intent
filter、service、Broadcase、BroadcaseReceiver
  13

15、       
说说mvc模式之法则,它当android中的下,android的官方建议应用程序的开使用mvc模式。何谓mvc?
   
13

16、        什么是ANR 如何避免其?… 13

17、        什么情形会招致ForceClose
?如何避免?能否捕获导致该的万分?
… 14

18、        描述一下android底系统架构… 14

19、        请介绍下ContentProvider是哪些贯彻多少共享的。… 14

20、       
Android本身的api并未声明会抛来老,则该当运作时有无可能抛出runtime异常,你遇见了啊?诺有的语会促成什么问题?如何缓解?

15

21、        IntentService有哪里长?. 15

22、   
如果后台的Activity由于有因被网回收了,如何当叫系统回收之前封存时状态?
   
    15

23、        如何以一个Activity设置成窗口的样式。… 15

24、       
如何退出Activity?如何安全退出已调用多单Activity的Application?
… 15

25、        AIDL的全是什么?如何做事?能处理哪些项目的数量?… 16

26、        请说明下Android程序运行时权和文件系统权限的别。
17

27、       
系统上安装了多种浏览器,能否指定某个浏览器访问指定页面?请证实原因。

17

28、        android系统的优势与不足… 17

29、        Android dvm的过程以及Linux的过程,
应用程序的进程是否为和一个概念
… 18

30、        sim卡的EF文件是啊?有何打算… 18

31、        嵌入式操作系统内存管理起哪几种, 各起何特征… 18

32、        什么是嵌入式实时操作系统,Android
操作系统属于实时操作系统吗?
. 18

33、        一漫漫极其丰富的差消息约占小byte?. 18

34、       
有一个一维整型数组int[]data保存的是同一摆设宽也width,高为height的图样像素值信息。请写一个算法,将该图形有的逆不透明(0xffffffff)像素点的透明度调整呢50%。.

… 18

35、       
如何以SQLite数据库(dictionary.db文件)与apk文件共发布
… 19

36、        如何将辟res aw目录中的数据库文件?. 19

37、        DDMS和TraceView的区别?. 19

38、        java中争引用本地语言… 19

39、        谈谈Android的IPC(进程之中通信)机制… 19

40、        NDK是什么… 19

 

 

1、    Android**的季雅组件是啦把,它们的用意?**

答:Activity:Activity是Android程序及用户交互的窗口,是Android构造块被最好中心的平等种,它用也保全各界面的状态,做过多持久化的事情,妥善管理生命周期以及有跳转逻辑

service:后台服务被Activity,封装有一个完好无缺的效益逻辑实现,接受上层指令,完成相关的食,定义好内需接受之Intent提供合同异步的接口

Content
Provider:是Android提供的老三在用数据的访方案,可以派生Content
Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的蕴藏细节,向他提供统一的假说模型,大大简化上层应用,对数据的构成提供了再次有利之路

BroadCast
Receiver:接受平等栽要又Intent作触发事件,接受相关消息,做片大概处理,转换成为一长条Notification,统一了Android的风波广播模型

2、    请介绍下Android中常用之五栽布局。

时不时因此五栽布局方式,分别是:FrameLayout(框架布局),LinearLayout
(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。

一样、FrameLayout:所有东西依次都置身左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。二、LinearLayout:线性布局,每一个LinearLayout里面还要可分为垂直布局(android:orientation=”vertical”)和水平布局(android:orientation=”horizontal”
)。当垂直布局时,每一样履行就是特来一个素,多个元素依次垂直往下;水平布局时,只发生一行,每一个要素依次为右侧排列。三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的岗位,这种布局方式也比较简单,但是于屏幕旋转时,往往会发出题目,而且多个要素的时节,计算比麻烦。四、RelativeLayout:相对布局好解为某一个要素呢参照物,来稳定的布局方式。主要性能有:相对于某个一个元素android:layout_below、     
android:layout_toLeftOf相对于父元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh;五、TableLayout:表格布局,每一个TableLayout里面来报表行TableRow,TableRow里面可以切切实实定义每一个元素。每一个布局都产生谈得来可之不二法门,这五单布局元素得以互相嵌套应用,做出漂亮的界面。

3、    android**被的卡通片有哇几类似,它们的特性和区分是什么 **

答:两种,一栽是Tween动画、还有一样种植是Frame动画。Tween动画,这种实现方式可假设视图组件移动、放大、缩小同有透明度的变更;另一样种植Frame动画,传统的卡通方法,通过各个的播报排列好之图纸来促成,类似电影。

4、 android
被来哪几栽解析xml的接近?官方推荐哪种?以及她的法则与界别。

报:XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上支付我们下Dom相对轻松来,但片属性敏感的数据库或手机上还是生死攸关用SAX方式,SAX读取是才为的,优点:不占内存空间、解析属性方便,但缺点就是是于套嵌多独支行来说处理不是怪有益于。而DOM方式会把一切XML文件加载到内存中失,这里Android开发网提醒大家该措施以检索方面可跟XPath很好的做而数据量不是非常挺引进应用,而PULL常常为此在J2ME对于节点处理比较好,类似SAX方式,同样十分节省内存,在J2ME中我们经常用的KXML库来分析。

5、 ListView**的优化方案**

答:1、如果打定义适配器,那么以getView方法中而考虑方法传上的参数contentView是否为null,如果为null就创造contentView并赶回,如果非也null则直接使用。在是法子被尽可能少创建view。

2、给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显的数码,可以齐图像数据异步加载的功能。

3、如果listview需要出示的item很多,就要考虑分页加载。比如一共要显100漫长或者又多之时光,我们得以设想先加载20修,等用户拉至列表底部的上又去加载接下去的20久。

6、 请介绍下Android的多寡存储方。

报经:使用SharedPreferences存储数据;文件存储数据;SQLite数据库存储数据;使用ContentProvider存储数据;网络存储数据;

Preference,File,
DataBase这三种植方式分别对应的目录是/data/data/PackageName/Shared_Pref,
/data/data/Package Name/files, /data/data/PackageName/database 。

如出一辙:使用SharedPreferences存储数据

首先说明SharedPreferences存储方,它是
Android提供的故来囤积一些略布置信息的均等栽机制,例如:登录用户的用户称和密码。其用了Map数据结构来囤数据,以键值的措施囤,可以概括的读取与写入,具体实例如下:

voidReadSharedPreferences(){

StringstrName,strPassword;

SharedPreferences   user = getSharedPreferences(“user_info”,0);

strName =user.getString(“NAME”,””);

strPassword =user getString(“PASSWORD”,””);

}

voidWriteSharedPreferences(String strName,String strPassword){

SharedPreferences   user = getSharedPreferences(“user_info”,0);

uer.edit();

user.putString(“NAME”,strName);

user.putString(“PASSWORD”,strPassword);

user.commit();

}

数量读取与写入的法子都非常简单,只是在写入的时刻有点区别:先调用edit()使该处编辑状态,然后才能够改数据,最后动用commit()提交修改的数量。实际上SharedPreferences是运用了XML格式将数据存储到装备遭遇,在DDMS中的File
Explorer中的/data/data/<package
name>/shares_prefs下。使用SharedPreferences是发出若干限制的:只能于与一个包内使用,不能够当不同之担保里以。

仲:文件存储数据

文本存储方是平栽于常用的点子,在Android中读取/写副文件之主意,与Java中落实I/O的先后是一心一致的,提供了openFileInput()和openFileOutput()方法来读取设备及之文书。具体实例如下:

String fn =“moandroid.log”;

FileInputStreamfis = openFileInput(fn);

FileOutputStreamfos = openFileOutput(fn,Context.MODE_PRIVATE);

老三:网络存储数据

纱存储方,需要与Android网络数据包打交道,关于Android
网络数据包的详实说明,请看Android SDK引用了Java SDK的如何package?。

四:ContentProvider

1、ContentProvider简介

当用继续ContentProvider类,并重复写该类用于提供数据和贮数据的章程,就足以向其它应用共享其数额。虽然采取另外方为足以对外共享数据,但数据看方式会坐数量存储的计若各异,如:采用文件方式对外共享数据,需要进行文件操作读写多少;采用sharedpreferences共享数据,需要以sharedpreferencesAPI读写多少。而使用ContentProvider共享数据的益处是合了多少访问方式。

2、Uri类简介

Uri代表了一旦操作的数码,Uri主要含有了简单局部信息:1.亟需操作的ContentProvider
,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

若操作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,并自
Uri中获取数据。Android系统提供了简单单用于操作Uri的工具类,分别吗UriMatcher
和ContentUris 。掌握其的使,会有利于我们的开发工作。

UriMatcher:用于匹配Uri,它的用法如下:

 

1.率先将你用匹配Uri路径全部让登记及,如下:

//常量UriMatcher.NO_MATCH表示不般配任何路径的返回码(-1)。

UriMatcheruriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

//如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider
/contact路径,返回匹配配码为1

uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”,
“contact”, 1);//添加需要匹配uri,如果配合就见面返回匹配配码

//如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider/contact/230门路,返回匹配配码为2

uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”,
“contact/#”,2);//#声泪俱下为搭配符

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:当外部应用得针对ContentProvider中的数额进行添加、删除、修改及询问操作时,可以下
ContentResolver 类来形成,要博取ContentResolver
对象,可以采取Activity提供的getContentResolver()方法。
ContentResolver使用insert、delete、update、query方法,来操作数据。

7、 activity**的启动模式有什么?是什么意义?**

答:在android里,有4栽activity的起步模式,分别吗:

“standard” (默认)

“singleTop”

“singleTask”

“singleInstance”

 

其要有如下不同:

  1. 哪控制所属task

“standard”和”singleTop”的activity的目标task,和接的Intent的发送者在跟一个task内,除非intent包括参数FLAG_ACTIVITY_NEW_TASK。

假设提供了FLAG_ACTIVITY_NEW_TASK参数,会启动暨别的task里。

“singleTask”和”singleInstance”总是将activity作为一个task的根元素,他们无会见让启动到一个别task里。

  1. 是否同意多个实例

“standard”和”singleTop”可以被实例化多次,并且是吃不同之task中,且一个task可以包括一个activity的大半单实例;

“singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。
singleTop要求而创建intent的时光栈顶已经有若创造
的Activity的实例,则将intent发送给该实例,而未发送给新的实例。

  1. 是否同意其他activity存在吃本task内

“singleInstance”独占一个task,其它activity不克是十分task里;如果其启动了一个初的activity,不管新的activity的launch
mode
如何,新的activity都用会见及别的task里运行(如同加了FLAG_ACTIVITY_NEW_TASK参数)。

倘除此以外三种模式,则可以和其它activity共存。

  1. 是否每次都特别成新实例

“standard”对于从未一个启动Intent都见面变一个activity的初实例;

“singleTop”的activity如果在task的栈顶的话,则未生成新的该activity的实例,直接下栈顶的实例,否则,生成该activity的实例。

准现在task栈元素为A-B-C-D(D在栈顶),这时候吃D发一个启动intent,如果D是
“standard”的,则生成D的一个初实例,栈变为A-B-C-D-D。

如果D是singleTop的话语,则无见面生产D的新实例,栈状态仍为A-B-C-D

假定这为B发Intent的言辞,不管B的launchmode是”standard” 还是
“singleTop” ,都见面生成B的新实例,栈状态成为A-B-C-D-B。

“singleInstance”是那个所在栈的唯一activity,它会每次都吃选定。

“singleTask”如果当栈顶,则接受intent,否则,该intent会让丢,但是该task仍会返回前台。

当曾有的activity实例处理新的intent时候,会调用onNewIntent()方法
如果接收intent生成一个activity实例,那么用户可以经back键回到上一个态;如果是已有的一个activity来拍卖者intent的说话,用户不能够由此按back键返回到当时之前的状态。

8、  跟activity和Task 有关的 Intent启动方式来安?其含义?

核心的Intent Flag有:

FLAG_ACTIVITY_NEW_TASK

FLAG_ACTIVITY_CLEAR_TOP

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

FLAG_ACTIVITY_SINGLE_TOP

FLAG_ACTIVITY_NEW_TASK

 
如果设置,这个Activity会成为历史stack中一个新Task的开端。一个Task(从起步它的Activity到下一个Task中之
Activity)定义了用户可以迁移的Activity原子组。Task可以活动到前台和后台;在某个特定Task中的富有Activity总是保持一如既往之次序。

 这个标志一般用于呈现“启动”类型的行:它们提供用户同样系列可以单独完成的事体,与开行它们的Activity完全无关。

 使用此标志,如果正在起步的Activity的Task已经以运转以来,那么,新的Activity将不见面启动;代替的,当前Task会简单的移入前台。参考FLAG_ACTIVITY_MULTIPLE_TASK标志,可以禁用这同样表现。

 这个标志不可知用来调用方对曾启动之Activity请求结果。

FLAG_ACTIVITY_CLEAR_TOP
  如果设置,并且这Activity已经于现阶段底Task中运行,因此,不再是又开动一个这个Activity的实例,而是于此Activity上方的保有Activity都用闭馆,然后是Intent会作为一个新的Intent投递到镇的Activity(现在在顶端)中。
  例如,假要一个Task中涵盖这些Activity:A,B,C,D。如果D调用了startActivity(),并且带有一个指向Activity
B的Intent,那么,C和D都将竣工,然后B接收及此Intent,因此,目前stack的场景是:A,B。
  上例被正周转的Activity
B既可在onNewIntent()中收到及是新的Intent,也得管自己关闭然后再次起动来收纳这Intent。如果它们的开行模式声明也
“multiple”(默认值),并且你没有于斯Intent中装置FLAG_ACTIVITY_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

   
如果安是标志,这个activity不管是自一个新的栈启动还是打都发出栈推到栈顶,它都将因为the
front door of the
task的章程启动。这就算称导致其他与以相关的栈都讲重置到正规状态(不管是正值讲activity移入还是移除),如果急需,或者直接重置该仓库为初始状态。

FLAG_ACTIVITY_SINGLE_TOP   如果设置,当此Activity位于历史stack的头运行时,不再启动一个新的

FLAG_ACTIVITY_BROUGHT_TO_FRONT
  这个标志一般不是由程序代码设置的,如以launchMode中安singleTask模式时系统协助你设定。

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
  如果设置,这将当Task的Activitystack中安一个尚原点,当Task恢复时,需要清理Activity。也就是说,下一致潮Task带在
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标记上前台时(典型的操作是用户以主画面重开它),这个Activity和其之上的都拿闭馆,以至于用户不可知重复返回回到它,但是可以返回之前的Activity。
  这在你的次序来分割点的上挺有因此。例如,一个e-mail应用程序可能来一个操作是查看一个附件,需要启动图片浏览Activity来显示。这个
Activity应该当e-mail应用程序Task的一模一样组成部分,因为当时是用户在此Task中触发的操作。然而,当用户距离这个Task,然后于主画面选择e-mail
app,我们可能希望回到查看的对话中,但非是翻开图片附件,因为当时给丁疑惑。通过在开行图片浏览时设定是标志,浏览以及另启动的Activity在下次用户返回到mail程序时还用整消。

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
  如果安,新的Activity不会见在日前启动的Activity的列表中保留。

FLAG_ACTIVITY_FORWARD_RESULT
  如果设置,并且是Intent用于打一个在的Activity启动一个新的Activity,那么,这个当对目标的Activity将见面传这个新的Activity中。这种方式下,新的Activity可以调用setResult(int),并且是结果值将发送给那个作为对目标的
Activity。

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
  这个标志一般不由应用程序代码安装,如果这Activity是自从历史记录里启动之(常以HOME键),那么,系统会拉您设定。

FLAG_ACTIVITY_MULTIPLE_TASK
  不要用这标志,除非您自己实现了应用程序启动器。与FLAG_ACTIVITY_NEW_TASK结合起来用,可以禁用把早已怀的Task送入前台的行事。当装时,新的Task总是会启动来处理Intent,而未任马上是是否业已起一个Task可以处理同之政工。
  由于默认的体系非含有图形Task管理力量,因此,你切莫应有采取是标志,除非你提供被用户同样种植办法得以回来到既起步的Task。
  如果FLAG_ACTIVITY_NEW_TASK标志没有安装,这个标志为忽视。

 

FLAG_ACTIVITY_NO_ANIMATION
  如果以Intent中安装,并传递让Context.startActivity()的话,这个标志将截留系统进入下一个Activity时使用
Acitivity迁移动画。这并无意味着动画将不用运行——如果其他一个Activity在起步显示之前,没有点名这个标志,那么,动画将于运用。这个标志可以非常好之用于实施一连串的操作,而动画片被作是重新强一级的波的教。

FLAG_ACTIVITY_NO_HISTORY
  如果设置,新的Activity将不再历史stack中保留。用户同样离开它,这个Activity就关了。这也可透过安装noHistory特性。

FLAG_ACTIVITY_NO_USER_ACTION
  如果安,作为新开行的Activity进入前台时,这个标志将以Activity暂停之前阻止打最前方的Activity回调的onUserLeaveHint()。
  典型的,一个Activity可以靠是回调指明显式的用户动作引起的Activity移出后台。这个回调在Activity的生命周期中标记一个恰如其分的触发,并关闭部分Notification。
  如果一个Activity通过非用户驱动的波,如来电要闹钟,启动之,这个标志吗应该传递让Context.startActivity,保证暂停的Activity不以为用户已知晓其Notification。

FLAG_ACTIVITY_PREVIOUS_IS_TOP
  If set and this intent is being used to launch a new activity froman
existing one, the current activity will not be counted as the top
activityfor deciding whether the new intent should be delivered to the
top instead ofstarting a new one. The previous activity will be used as
the top, with theassumption being that the current activity will finish
itself immediately.

FLAG_ACTIVITY_REORDER_TO_FRONT
  如果当Intent中安装,并传递让Context.startActivity(),这个标志将抓住已经运行的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()直到系统调用onStop()

前台生命周期:从onResume()直到系统调用onPause()

10、  activity**在屏幕旋转时的生命周期**

报:不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会尽同一糟糕,切竖屏时见面实行两蹩脚;设置Activity的android:configChanges=”orientation”时,切屏还是碰头更调用各个生命周期,切横、竖屏时才会实施同一不成;设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不见面再度调用各个生命周期,只会尽onConfigurationChanged方法

11、  如何启用Service,如何停用Service。

劳动的支付比较简便,如下:

第一步:继承Service类

public classSMSService extends Service {}

其次步:在AndroidManifest.xml文件中之<application>节点里对劳动进行部署:<serviceandroid:name=”.SMSService”
/>

劳不可知自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这片单办法还足以启动Service,但是她的采取场所有所不同。使用startService()方法启用服务,调用者与劳务中间没有关,即使调用者退出了,服务还运行。使用bindService()方法启用服务,调用者与服务绑定在了一同,调用者一旦退出,服务也就告一段落,大有“不求同时生,必须同时特别”的特征。

只要打算以Context.startService()方法启动服务,在劳务不受创造时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已为创造,多次调用startService()方法并无会见招致多次创服务,但会招多次调整用onStart()方法。采用startService()方法启动的劳动,只能调用Context.stopService()方法了劳动,服务了时会见调用onDestroy()方法。

要打算动用Context.bindService()方法启动服务,在劳动不吃创造时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和劳动绑定在联合,调用者退出了,系统便会见先行调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务业已给绑定,多次调用bindService()方法并无会见招致多次开立服务与绑定(也就是说onCreate()和onBind()方法并无会见于频繁调用)。如果调用者希望以及在绑定的劳务解除绑定,可以调用unbindService()方法,调用该办法呢会见导致系统调用服务之onUnbind()–>onDestroy()方法。

 

服务常用生命周期回调方法如下:

onCreate()
该办法以服务让创造时调用,该法只有会受调用一不好,无论调用多少坏startService()或bindService()方法,服务吗唯有叫创造同不善。

onDestroy()该法以劳动被停止时调用。

及祭Context.startService()方法启动服务有关的生命周期方法

onStart()
只来使用Context.startService()方法启动服务时才见面回调该方式。该方式在劳务开始运行时为调用。多次调用startService()方法尽管不见面一再创立服务,但onStart()
方法会被频繁调用。

同下Context.bindService()方法启动服务有关的生命周期方法

onBind()只来利用Context.bindService()方法启动服务时才会回调该方式。该方式在调用者与劳务绑定时于调用,当调用者与劳动业已绑定,多次调用Context.bindService()方法并无会见招拖欠法为数调用。

onUnbind()只发利用Context.bindService()方法启动服务经常才会回调该办法。该办法以调用者与服务解除绑定时吃调用

 

12、   
注册广播有几乎种植方式,这些措施发生哪优缺点?请谈谈Android引入广播机制的来意。

报:首先写一个类要继承BroadcastReceiver

第一种:在清单文件中声明,添加

<receiveandroid:name=”.IncomingSMSReceiver ” >

<intent-filter>

   <actionandroid:name=”android.provider.Telephony.SMS_RECEIVED”)

<intent-filter>

<receiver>

第二种植使代码进行注册如:

IntentFilterfilter = 
newIntentFilter(“android.provider.Telephony.SMS_RECEIVED”);

IncomingSMSReceiverreceiver = new IncomgSMSReceiver();

registerReceiver(receiver.filter);

星星栽注册项目的分别是:

1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。

2)第二种是常驻型,也就是说当应用程序关闭后,如果有消息播报来,程序吗会于网调用自动运行。

 

13、    请讲下以单线程模型中Message、Handler、Message
Queue、Looper之间的涉及。

报经:简单的游说,Handler获取当前线程中之looper对象,looper用来打存放Message的MessageQueue中取出Message,再出Handler进行Message的分发及处理.

Message
Queue(消息队列):用来存放通过Handler发布的信息,通常附属于某一个创造它的线程,可以经Looper.myQueue()得到时线程的音队列

Handler:可以发表或者处理一个消息还是操作一个Runnable,通过Handler发布消息,消息将只是见面发送到和它们事关的音队列,然也只好处理该消息队列中之音讯

Looper:是Handler和消息队列中通讯桥梁,程序组件首先通过Handler把消息传递给Looper,Looper把信放入队列。Looper也把消息队列里之音讯广播于拥有的

Handler:Handler接受到信息后调用handleMessage进行拍卖

Message:消息之类别,在Handler类中的handleMessage方法被获单个的音讯进行处理

在单线程模型下,为了线程通信问题,Android设计了一个Message
Queue(消息队列), 线程间可以经该Message
Queue并做Handler和Looper组件进行信息置换。下面将对准其进行分级介绍:

  1. Message

   
Message消息,理解啊线程间交流的音,处理数据后台线程需要更新UI,则发送Message内涵盖部分数给UI线程。

  1. Handler

   
Handler处理者,是Message的要处理者,负责Message的发送,Message内容的实行拍卖。后台线程就是经过污染上的
Handler对象引用来sendMessage(Message)。而采用Handler,需要implement
该类的
handleMessage(Message)方法,它是拍卖这些Message的操作内容,例如Update
UI。通常需子类化Handler来实现handleMessage方法。

  1. Message Queue

    Message
Queue消息队列,用来存放在通过Handler发布的消息,按照先进先出执行。

    每个message
queue都见面有一个应和之Handler。Handler会向messagequeue通过个别栽方式发送信息:sendMessage或post。这片种信息还见面插在message
queue队尾并按先进先出执行。但透过就简单种植艺术发送的音讯执行之主意略有不同:通过sendMessage发送的凡一个message对象,会于
Handler的handleMessage()函数处理;而经post方法发送的是一个runnable对象,则会自己行。

  1. Looper

    Looper是各级条线程里之Message
Queue的管家。Android没有Global的MessageQueue,而Android会自动为主线程(UI线程)建立Message
Queue,但于子线程里并无树立Message
Queue。所以调用Looper.getMainLooper()得到的主线程的Looper不为NULL,但调用Looper.myLooper()得到时线程的Looper就时有发生或吗NULL。对于子线程使用Looper,API
Doc提供了对的应用办法:这个Message机制的横流程:

    1. 每当Looper.loop()方法运行起来后,循环地按照接收顺序取出Message
Queue里面的非NULL的Message。

    2. 相同从头Message
Queue里面的Message都是NULL的。当Handler.sendMessage(Message)到Message
Queue,该函数里面安装了特别Message对象的target属性是眼前之Handler对象。随后Looper取出了充分Message,则调用
该Message的target指向的Hander的dispatchMessage函数对Message进行拍卖。在dispatchMessage方法里,如何处理Message则是因为用户指定,三独判断,优先级从高至没有:

    1)
Message里面的Callback,一个贯彻了Runnable接口的目标,其中run函数做处理工作;

    2)
Handler里面的mCallback指向的一个兑现了Callback接口的靶子,由其handleMessage进行处理;

    3)
处理消息Handler对象对应之好像继承并落实了里面handleMessage函数,通过这实现之handleMessage函数处理消息。

    由此可见,我们兑现之handleMessage方法是优先级最低的!

    3. Handler处理了该Message (updateUI)
后,Looper则设置该Message为NULL,以便回收!

   
在网上有成百上千篇讲述主线程和任何子线程如何相互,传送信息,最终谁来施行拍卖信息等等的,个人掌握是极端简易的法门——判断Handler对象中的Looper对象是属哪条线程的,则由该线程来施行!

    1. 当Handler对象的构造函数的参数为空,则也目前所在线程的Looper;

2.
Looper.getMainLooper()得到的是主线程的Looper对象,Looper.myLooper()得到的是眼前线程的Looper对象。

14、    简要解释一下activity、 intent 、intent
filter、service、Broadcase、BroadcaseReceiver

报:一个activity呈现了一个用户可以操作的可视化用户界面;一个service不含可见的用户界面,而是在后台运行,可以跟一个activity绑定,通过绑定暴露出来接口并和该进行通信;一个broadcast
receiver是一个接播放消息并做出回复的component,broadcast
receiver没有界面;一个intent是一个Intent对象,它保存了音信的内容。对于activity和service来说,它指定了央的操作名称和待操作数据的URI,Intent对象可以显式的指定一个目标component。如果这样的话,android会找到这个component(基于manifest文件中之声明)并激活它。但万一一个对象不是显式指定的,android必须找到响应intent的特级component。它是经将Intent对象与目标的intent
filter相比较来好就无异干活之;一个component的intent
filter告诉android该component能处理的intent。intentfilter也是于manifest文件中宣称的。

15、   
说说mvc模式的法则,它在android中之运用,android的法定建议应用程序的出以mvc模式。何谓mvc?

mvc是model,view,controller的缩写,mvc包含三单有:

  模型(model)对象:是应用程序的着重点有,所有的事情逻辑都应该写在该层。

  视图(view)对象:是应用程序中背转用户界面的一部分。也是在任何mvc架构中用户唯一可看来底同一层,接收用户的输入,显示处理结果。

  控制器(control)对象:是依据用户的输入,控制用户界面数据展示与创新model对象状态的局部,控制器又要的平种导航功能,响应用户出发的有关事件,交给m层处理。

  android鼓励弱耦合和组件的任用,在android中mvc的有血有肉体现如下:

  1)视图层(view):一般采用xml文件进行界面的叙述,使用的时可挺好之引入,当然,如果你针对android了解的于的基本上矣话语,就必得想到在android中吗堪行使javascript+html等之措施作为view层,当然这里需要进行java和javascript之间的通信,幸运的是,android提供了它之间充分便宜之通信实现。

  2)控制层(controller):android的控制层的重任通常落于了无数之acitvity的肩上,这词话也即迷迷糊糊含了不用在acitivity中写代码,要通过activity交割model业务逻辑层处理,这样做的另外一个因是android中之acitivity的应时间是5s,如果耗时的操作放在此处,程序就算那个轻受回收掉。

  3)模型层(model):对数据库的操作、对网等之操作都当在model里面处理,当然对作业计算相当于操作也是须在的该层的。

16、    什么是ANR 如何避免它?

报经:ANR:Application Not
Responding。在Android中,活动管理器和窗口管理器这有限单体系服务承受监视应用程序的应,当用户操作的当5s内应用程序没能够做出反应,BroadcastReceiver在10秒内没有履完毕,就会产出应用程序无响应对话框,这既是是ANR。

避方法:Activity应该当其的第一生命周期方法(如onCreate()和onResume())里尽可能少的错过举行创建操作。潜在的耗时操作,例如网络要数据库操作,或者高耗时的精打细算而反各图尺寸,应该以子线程里(或者异步方式)来好。主线程应该为子线程提供一个Handler,以便就时会交给给主线程。

17、    什么状况会招Force Close ?如何避免?能否捕获导致该的很?

答:程序出现异常,比如nullpointer。

避免:编写程序时逻辑连贯,思维缜密。能捕获异常,在logcat中会望那个信息

18、    描述一下android之系统架构

android系统架构分从下为上吗linux
内核层、运行库、应用程序框架层、和应用程序层。

linuxkernel:肩负硬件的驱动程序、网络、电源、系统安全以及内存管理等于作用。

libraries和 android
runtime
:libraries:即c/c++函数库部分,大多数还是开源代码的函数库,例如webkit(引擎),该函数库负责
android网页浏览器的运作,例如标准的c函数库libc、openssl、sqlite等,当然也席卷支持游戏支付2dsgl暨
3dopengles,在多媒体方面出mediaframework框架来支撑各种影音和图形文件的播放以及展示,例如mpeg4、h.264、mp3、
aac、amr、jpg和png等居多的多媒体文件格式。android的runtime负责解释与履生成的dalvik格式的字节码。

  applicationframework(应用软件架构),java应用程序开发人员主要是应用该层封装好之api进行快捷开。

  applications:该层是java的应用程序层,android内置的googlemaps、e-mail、即经常通信工具、浏览器、mp3播放器等处该层,java开发人员开发之先后也处于该层,而且和搭的应用程序具有同样之岗位,可以调用内置的应用程序,也足以轮换内置的应用程序。

  上面的季独层次,下层为上层服务,上层需要下层之支撑,调用下层的劳务,这种严峻分层的章程带来的偌大的康乐、灵活性和可扩展性,使得不同层的开发人员可以随正规专心特定层的支付。

android应用程序使用框架的api并在框架下运作,这虽带来了序支付的高度一致性,另一方面也告知我们,要想写来上快捷的先后就算亟须对周
applicationframework进行深尖锐的明白。精通applicationframework,你就是可以真正的领悟android的规划和运行机制,也尽管再次能开整个应用层的开销。

19、    请介绍下ContentProvider是怎促成数量共享的。

一个顺序可以透过兑现一个Content
provider的肤浅接口将协调的数额完全暴露出来,而且Contentproviders是为类数据库中表的法子拿数据暴露。Content
providers存储和搜索数据,通过它可以被有的应用程序访问到,这为是应用程序之间唯一共享数据的法门。

倘想要应用程序的多寡公开化,可由此2种植艺术:创建一个属您自己之Content
provider或者将公的数量增长到一个早就在的Content
provider中,前提是产生同数据类型并且有描绘副Contentprovider的权位。

怎样通过一样效仿标准与联合的接口获取其他应用程序暴露的数据?

   
Android提供了ContentResolver,外界的顺序可以通过ContentResolver接口访问ContentProvider提供的数目。

20、    Service**和Thread的区别?**

报:servie是系统的组件,它由系统经过托管(servicemanager);它们之间的通信类于client766游戏网官网和server,是一模一样种植轻量级的ipc通信,这种通信的载体是binder,它是当linux层交换信息之均等种植ipc。而thread是由以应用程序托管。

1).
Thread:Thread是程序执行的极端小单元,它是分配CPU的骨干单位。可以用Thread
来推行有异步的操作。

2).
Service:Service是android的平等种体制,当其运行的时要是LocalService,那么相应之Service
是运行在主进程的main
线程上的。如:onCreate,onStart这些函数在受系统调用的时候还是以主进程的
main 线程上运行的。如果是Remote Service,那么相应的Service
则是运作于独立进程的main 线程上。

既这样,那么我们为什么而就此Service 呢?其实就和android
的系统编制有关,我们事先用Thread 来说。Thread的运作是独立为 Activity
的,也就是说当一个Activity 被 finish
之后,如果你未曾积极性停止Thread 或者Thread
里的 run方法无实施了的话,Thread 也会见直接执行。因此此会起一个问题:当Activity
被 finish 之后,你不再持有该Thread
的援。另一方面,你没有主意在不同的Activity 中对同一Thread 进行控制。  

推选个例证:如果你的Thread
需要不停歇地隔一段时间就要连续服务器做某种同步的话,该Thread 需要以Activity
没有start的时候吗在运转。这个时节当您start 一个Activity
就无章程在该Activity
里面控制前创建的Thread。因此你便用创造并启动一个Service ,在Service
里面创建、运行并操纵该Thread,这样便解决了该问题(因为任何Activity
都得以控制同一Service,而系统吧只有见面创造一个应和Service 的实例)。  

就此你得将Service 想象变为一种信息服务,而若可当任何有Context
的地方调用Context.startService、Context.stopService、Context.bindService,Context.unbindService,来决定其,你也可于Service
里登记BroadcastReceiver,在其余地方通过发送broadcast
来决定它们,当然这些都是Thread 做不交的。

21、   
Android本身的api并未声明会抛来十分,则该在运转时有无可能抛出runtime异常,你遇到了呢?诺有的言语会招致什么问题?如何缓解?

报经:会,比如nullpointerException。我赶上过,比如textview.setText()时,textview没有初始化。会招致程序无法正常运作出现forceclose。打开控制台查看logcat信息搜索来十分信息并修改程序。

22、    IntentService**出哪长?**

报:Acitivity的进程,当处理Intent的上,会起一个对应的Service;
Android的长河处理器现在会尽可能的免kill掉你;非常容易使用

23、   
如果后台的Activity由于某因让网回收了,如何当为系统回收之前封存时状态?

报经:重写onSaveInstanceState()方法,在斯方法吃保存要保留之数,该方式将会当activity被回收之前调用。通过更写onRestoreInstanceState()方法可以从中提取保存好的数额

24、    如何用一个Activity设置成窗口的体。

答:<activity>中配置:android :theme=”@android:style/Theme.Dialog” 

另外android:theme=”@android:style/Theme.Translucent” 是安装透明

25、   
如何退出Activity?如何安全退出已调用多个Activity的Application?

答:对于单一Activity的用来说,退出很粗略,直接finish()即可。当然,也得就此killProcess()和System.exit()这样的主意。

对多只activity,1、记录打开的Activity:每打开一个Activity,就记录下来。在用退出时,关闭每一个Activity即可。2、发送特定广播:在待了应用时,发送一个特定的播放,每个Activity收到广播后,关闭即可。3、递归退出:在开拓新的Activity时采用startActivityForResult,然后自己加标志,在onActivityResult中拍卖,递归关闭。为了编程方便,最好定义一个Activity基类,处理这些同通问题。

 

于2.1前,可以下ActivityManager的restartPackage方法。

它们可一直收所有应用。在动用时欲权限android.permission.RESTART_PACKAGES。

留神不要为其的讳迷惑。

只是,在2.2,这个艺术失效了。在2.2互补加了一个新的方法,killBackground
Processes(),需要权限android.permission.KILL_BACKGROUND_PROCESSES。可惜的凡,它同2.2的restartPackage一样,根本起未顶相应的效应。

此外还有一个方法,就是系自带的应用程序管理里,强制结束程序的法,forceStopPackage()。它用权限android.permission.FORCE_STOP_PACKAGES。并且用添加android:sharedUserId=”android.uid.system”属性。同样可惜的凡,该法是非公开的,他不得不运行于系经过,第三在先后无法调用。

以需要以Android.mk中添加LOCAL_CERTIFICATE := platform。

假若Android.mk是用于在Android源码下编译程序用底。

自上述可见见,在2.2,没有章程直接收一个行使,而不得不用自己的方间接办到。

即提供几乎只点子,供参考:

1、抛大强制退出:

拖欠办法通过废除大,使程序Force Close。

证可以,但是,需要缓解之问题是,如何如程序结束掉,而不弹来Force
Close的窗口。

2、记录打开的Activity:

各个打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。

3、发送特定广播:

以待收尾应用时,发送一个一定的播音,每个Activity收到广播后,关闭即可。

4、递归退出

当开辟新的Activity时采用startActivityForResult,然后自己加标志,在onActivityResult中拍卖,递归关闭。

除第一个,都是思念方法把各个一个Activity都结束掉,间接达到目的。但是这么做同样无完美。你会意识,如果自己之应用程序对各级一个Activity都设置了nosensor,在少只Activity结束的空,sensor可能立竿见影了。但至少,我们的目的上了,而且没有影响用户用。为了编程方便,最好定义一个Activity基类,处理这些共同通问题。

 

26、  AIDL**的全是呀?如何行事?能处理哪些类型的数?**

答:全称是:AndroidInterface Define Language

每当Android中, 每个应用程序都得产生协调的进程. 在描写UI应用之时节,
经常要为此到Service. 在不同的经过遭到, 怎样传递对象也?显然,
Java中不允许超过进程内存共享.因此传递对象,
只能将目标拆分成操作系统能了解的简款式, 以高达跨界对象看的目的.
在J2EE中,采用RMI的点子, 可以由此序列化传递对象.在Android中,
则采用AIDL的方式. 理论上AIDL可以传递Bundle,实际上做起来却比麻烦。

AIDL(AndRoid接口描述语言)是千篇一律种植借口描述语言;
编译器可以经aidl文件特别成一段落代码,通过事先定义之接口及一定量个过程中通信进程的目的.
如果要以一个Activity中, 访问另一个Service中的某某对象,
需要事先将目标转化成AIDL可认识别的参数(可能是差不多只参数),然后利用AIDL来传递这些参数,
在消息的接收端, 使用这些参数组装成温馨要的对象.

AIDL的IPC的机制同COM或CORBA类似,
是基于接口的,但她是轻量级的。它利用代理类在客户端以及促成层间传递值.
如果要运用AIDL, 需要完成2件事情: 1. 引入AIDL的连锁类.;
2.调用aidl产生的class.

AIDL的始建方法:

AIDL语法很粗略,可以据此来声称一个牵动一个还是多独办法的接口,也可传递参数与归值。
由于长途调用的待,
这些参数与归值并无是外类型.下面是些AIDL支持的数据类型:

  1. 非需要import声明的简便Java编程语言类(int,boolean等)

  2. String, CharSequence不欲非常声明

  3. List, Map和Parcelables类型,
    这些品种内所富含的多少成员也只能是简简单单数据类型,
    String等另比支持之类型.

(另外: 我并未尝试Parcelables, 在Eclipse+ADT下编译不过, 或许以后会所有支持)

27、    请讲下Android程序运行时权和文件系统权限的别。

报经:运行时权Dalvik(android授权)

文件系统 linux 内核授权

28、   
系统上安装了多浏览器,能否指定某个浏览器访问指定页面?请说明原委。

透过直接发送Uri把参数带过去,或者经过manifest里之intentfilter里的data属性

 

29、    android**网的优势以及不足**

报:Android平台手机 5老大优势:

一、开放性

当优势方面,Android平台首先就是是其开发性,开发之平台允许任何活动终端厂商参加到Android联盟受来。显著的开放性可以要该独具更多的开发者,随着用户和以之慢慢丰富,一个新的阳台为以飞走向成熟。开放性对于Android的上扬而言,有利于积累人气,这里的人气席卷消费者以及厂商,而对此顾客来讲,随大的受益正是长的软件资源。开放之阳台为会见带重新要命竞争,如此一来,消费者将可就此重新不比的标价购得心仪的无绳电话机。

次、挣脱运营商的格

于过去死丰富的一段时间,特别是在欧美地区,手机用往往被运营商制约,使用什么作用衔接什么网络,几乎都着运营商的支配。从上年iPhone
上市
,用户可以更便民地连网络,运营商的掣肘减少。随着EDGE、HSDPA这些2G顶3G动网的逐级过渡与提升,手机随机接入网络就不是营业商口中之笑谈,当您得经手机IM软件方便地开展当下聊天时,再回首不久前天价的彩信和图铃下充斥业务,是勿是诸如噩梦一样?互联网巨头Google推动的Android终端天生就产生网特征,将被用户距离互联网更近。

老三、丰富的硬件选择

这一点或者同Android平台的开放性相关,由于Android的开放性,众多之厂商会推出千奇百怪,功能特色各具的多种产品。功能及的距离和特征,却未会见潜移默化至数并、甚至软件的相当,好于你于诺基亚
Symbian风格手机 一下改用苹果 iPhone
,同时还可拿Symbian中完美之软件带顶iPhone上行使、联系人等资料更加可以一本万利地变换,是未是很有利呢?

季、不叫外限制的开发商

Android平台提供于第三正开发商一个深广大、自由的环境,不见面受各种条条框框的阻扰,可想而知,会出微新颖别致的软件会诞生。但为发那个两面性,血腥、暴力、情色方面的次序和游乐而可控制正是留给Android难题之一。

五、无缝结合的Google应用

今昔叱诧互联网的Google已经走过10春历史,从寻觅巨人到周的互联网渗透,Google服务一旦地图、邮件、搜索等早已成连接用户与互联网的显要问题,而Android平台手机将无缝结合这些脍炙人口之Google服务。

再说Android的5大不足:

平等、安全和隐私

出于手机
与互联网的紧密联系,个人隐私很不便取得保守。除了上网过程中注意或无留神留下的民用足迹,Google这个大个子也随时站于你的身后,洞穿布满,因此,互联网的递进将会见带动新一轮的隐情危机。

次、首先开卖Android手机的莫是绝深运营商

引人注目,T-Mobile在23日,于美国纽约发布
了Android首款手机G1。但是当北美市面,最老之少数小营业商乃AT&T和Verizon,而目前所掌握取得Android手机销售权的特来
T-Mobile和Sprint,其中T-Mobile的3G网络相对于外三下啊要低不少,因此,用户可请账购买G1,能否体验到最佳的3G网络服务则要另外当别论了!

老三、运营商仍能影响及Android手机

每当国内市场,不少用户对购买移动定制机不充满,感觉所请的手机为人涂画了广告一般。这样的图景以国外市场同样出现。Android手机的别样一样售卖运营商Sprint就将以该机型中置其手机店程序。

季、同类机型用户减少

于不少无线电话论坛还见面发生针对性有平型号的分支论坛,对同一款手机的利用体验交流,并分享软件资源。而对Android平台手机,由于厂商丰富,产品品种多样,这样以同一款机型的用户越来越少,缺少统一机型的主次强化。举个稍显不当之事例,现在山寨机泛滥,品种不同,就不行少生专门对有型号山寨机的议论和群组,除了哪些职能特别抢眼、颇让追捧的机型以外。

五、过分依赖开发商少标准配置

以利用PC端的Windows Xp系统的时段,都见面放微软Windows Media
Player这样一个浏览器先后,用户可选择更不知凡几的播放器,如Realplay或暴风影音等。但动手开始采用默认的次序一样可应付多样的待。在Android平台遭遇,由于其开放性,软件还多靠第三在厂商,比如Android系统的SDK中不怕不曾放置音乐
播放器,全部凭借第三着支付,缺少了出品之统一性。

30、  Android dvm**的进程以及Linux的进程,
应用程序的经过是否为和一个定义**

报经:DVM指dalivk的虚拟机。每一个Android应用程序都在它和谐的经过中运作,都独具一个单独的Dalvik虚拟机实例。而诸一个DVM都是以Linux
中之一个历程,所以说可以看是和一个概念。

31、  sim**障的EF文件是什么?有哪里打算**

报经:sim卡的文件系统有自己专业,主要是为与手机通讯,sim本
身可以出谈得来之操作系统,EF就是发存储并和手机通讯用的

32、  嵌入式操作系统内存管理来哇几栽, 各起哪里特点

  页式,段式,段页,用到了MMU,虚拟空间等技巧

33、  什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

嵌入式实时操作系统是依当外界事件或数产生时,能够承受并为足够快的快与处理,其处理的结果还要能在规定的日子内来控制生产过程要针对拍卖系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用以工业控制、军事设备、
航空航天等世界对系统的响应时间发生苛刻的渴求,这虽需采取实时系统。又只是分为软实时与健康时有限种,而android是基于linux内核的,因此属于软实时。

34、  一修最丰富的差消息约占多少byte?

  国语70(包括标点),英文160,160个字节。  

35、 
有一个一维整型数组int[]data保存的凡一模一样张宽也width,高为height的图片像素值信息。请写一个算法,将该图形有的反动不透明(0xffffffff)像素点的透明度调整也50%。

36、  如何以SQLite数据库(dictionary.db文件)与apk文件共发布

解答:可以将dictionary.db文件复制到Eclipse Android工程被的res
aw目录中。所有以res
aw目录中之文本不见面给缩减,这样可一直提该目录中之公文。可以以dictionary.db文件复制到res
aw目录中

37、  如何拿打开res aw目录中的数据库文件?

解答:在Android中无可知一直打开res
aw目录中的数据库文件,而待以次第一不成启动时以拖欠文件复制到手机内存还是SD卡的有目录中,然后再次打开该数据库文件。

复制的主导办法是应用getResources().openRawResource方法获得res
aw目录中资源的
InputStream对象,然后将欠InputStream对象被的数量形容副另外的目中相应文件中。在Android
SDK中可动用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

38、  DDMS**和TraceView的区别?**

DDMS是一个程序执行查看器,在中间可以望见线程和货栈等信息,TraceView是程序性能分析器

39、  java**被怎么样引用本地语言**

好为此JNI(java native interface  java 本地接口)接口 。

40、  谈谈Android的IPC(进程中通信)机制

IPC是其中进程通信的简称,是共享”命名管道”的资源。Android中的IPC机制是以让Activity和Service之间可天天的进行相互,故在Android中该机制,只适用于Activity及Service之间的通信,类似于远程方法调用,类似于C/S模式之访问。通过定义AIDL接口文件来定义IPC接口。Servier端实现IPC接口,Client端调用IPC接口本地代理。

41、  NDK**是什么**

NDK是局部列工具的集结,NDK提供了一如既往雨后春笋之家伙,帮助开发者迅速的出C/C++的动态库,并会自行将so和java
应用打成apk包。

NDK集成了接力编译器,并提供了对应的mk文件和隔断cpu、平台等的距离,开发人员只待简的改mk文件就可以创建有so

发表评论

电子邮件地址不会被公开。 必填项已用*标注