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);它们中间的通信类于client和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

发表评论

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