766游戏网官网Android面试题

1、Android的季深组件是哪头,它们的意向?

2、请介绍下Android中常用的五种植布局。

3、android中的动画有哇几类似,它们的特色和区分是什么 

4、android 中发出哇几栽解析xml的类似?官方推荐哪种?以及她的法则和区分。 

5、ListView的优化方案 

6、请介绍下Android的数码存储方。 

7、activity的开行模式发生哪些?是什么意思?

8、跟activity和Task 有关的 Intent启动方式有怎么样?其意义?

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

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

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

12、注册广播有几乎种植艺术,这些办法发生哪优缺点?请谈谈Android引入广播机制的企图。

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

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

15、说说mvc模式的原理,它以android中之以,android的合法建议应用程序的支付使用mvc模式。何谓mvc?

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

17、什么状态会促成Force Close ?如何避免?能否捕获导致该的雅?

18、描述一下android之网架构

19、请介绍下ContentProvider是怎样贯彻数量共享的。

20、Android本身的api并未声明会抛来老,则该在运行时有无可能抛出runtime异常,你赶上了也?诺有的语句会促成什么问题?如何化解?

21、IntentService有哪长? 

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

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

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

25、AIDL的齐全是啊?如何做事?能处理哪些路的数额? 

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

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

28、android系统的优势以及不足 17

29、Android dvm的进程同Linux的经过, 应用程序的经过是否为跟一个概念 

30、sim卡的EF文件是呀?有哪里打算 

31、嵌入式操作系统内存管理来哪几栽, 各有何特点 

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

33、一漫漫极其丰富之缺乏消息约占小byte? 

34、有一个一维整型数组int[]data保存之是一律布置宽也width,高为height的图形像素值信息。请写一个算法,将欠图有的白不透明(0xffffffff)像素点的透明度调整也50%。

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

36、如何拿开辟res aw目录中之数据库文件? 

37、DDMS和TraceView的区别?

38、java中哪引用本地语言

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

40、NDK是什么 

 

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/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。

同等:使用SharedPreferences存储数据

率先说明SharedPreferences存储方,它是 Android提供的之所以来存储一些大概布置信息的一致栽体制,例如:登录用户之用户称与密码。其以了Map数据结构来囤积数据,以键值的办法囤,可以简简单单的读取与写入,具体实例如下:

void ReadSharedPreferences(){

String strName,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.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”;

FileInputStream fis = openFileInput(fn);

FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATE);

其三:网络存储数据

纱存储方,需要跟Android 网络数据包打交道,关于Android 网络数据包的事无巨细说明,请阅读Android SDK引用了Java SDK的焉package?。

四:ContentProvider

1、ContentProvider简介

当用持续ContentProvider类,并重新写该类用于提供数据和仓储数据的艺术,就得为另外使用共享其数额。虽然使用外艺术也可对外共享数据,但数量访问方式会因为数量存储的法子如异,如:采用文件措施对外共享数据,需要进行文件操作读写多少;采用sharedpreferences共享数据,需要以sharedpreferences API读写多少。而采用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)。

UriMatcher uriMatcher = 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里。

2. 是否同意多只实例 

“standard”和”singleTop”可以让实例化多次,并且有吃不同之task中,且一个task可以包括一个activity的几近只实例; 

“singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。 singleTop要求如创建intent的当儿栈顶已经闹使创 的Activity的实例,则用intent发送给该实例,而休发送给新的实例。

3. 是否允许其他activity存在被本task内 

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

比方另外三栽模式,则可和任何activity共存。

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

“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的Activity stack中设置一个还原点,当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 from an existing one, the current activity will not be counted as the top activity for deciding 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(),这个标志将抓住已经运行的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 class SMSService extends Service {}

其次步:在AndroidManifest.xml文件中之<application>节点里对劳动进行布局:<service android: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

先是栽:在清单文件被扬言,添加

<receive android:name=”.IncomingSMSReceiver ” >

<intent-filter>

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

<intent-filter>

<receiver>

次种下代码进行挂号如:

IntentFilter filter =  new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);

IncomingSMSReceiver receiver = 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线程。

2. Handler 

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

3. Message Queue 

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

    每个message queue都见面来一个遥相呼应之Handler。Handler会向message queue通过个别种植方法发送信息:sendMessage或post。这片种信息还见面插在message queue队尾并按先进先出执行。但透过这简单种植方式发送的信执行的主意略有不同:通过sendMessage发送的是一个message对象,会给 Handler的handleMessage()函数处理;而经post方法发送的是一个runnable对象,则会好履。

4. Looper 

    Looper是每条线程里之Message Queue的管家。Android没有Global的Message Queue,而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 (update UI) 后,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。intent filter也是当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的架空接口将自己之数码全暴露出,而且Content providers是因近乎数据库中表的章程以数据暴露。Content providers存储和搜索数据,通过其可被抱有的应用程序访问到,这吗是应用程序之间唯一共享数据的计。

假定想如果应用程序的数额公开化,可透过2栽办法:创建一个属您协调的Content provider或者将你的多寡增长到一个早就是的Content provider中,前提是发平等数据类型并且发生描绘副Content provider的权能。

哪些通过平等法标准以及联合的接口获取其他应用程序暴露的多少?

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的相同种体制,当其运行的时段要是Local Service,那么相应的 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的齐全是什么?如何做事?能处理哪些路的数目?

答:全称是:Android Interface 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

发表评论

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