766游戏网官网[转载]android 面试题2次募集

初稿地址:android 面试题2次收集作者:android追梦者

1、 Android dvm的历程以及Linux的历程, 应用程序的长河是否为和一个定义

  DVM指dalivk的虚拟机。每一个Android应用程序都以它好的历程被运行,都独具一个独门的Dalvik虚拟机实例。而诸一个DVM都是以Linux
中之一个历程,所以说可以当是与一个概念。

  2、sim卡的EF 文件发出哪打算

  sim卡的文件系统有协调专业,主要是为与手机通讯,sim本
身可以生投机的操作系统,EF就是犯存储并跟手机通讯用之

  3、嵌入式操作系统内存管理有哇几栽, 各有哪里特征

  页式,段式,段页,用到了MMU,虚拟空间相当技术

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

  嵌入式实时操作系统是依靠当外界事件或数额产生时,能够经受并因为足够快的进度与处理,其处理的结果而会在规定的时里来支配生产过程或者针对拍卖系统作出快速响应,并操纵所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、
军事装备、
航空航天等世界对网的响应时间有苛刻的要求,这就得动用实时系统。又只是分为软实时和身心健康时有限栽,而android是基于linux内核的,因此属于软实时。

  5、一久极其丰富的紧缺消息约占小byte?

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

  6、 android中之卡通有哪几看似,它们的特点及分是什么?

  两种植,一种植是Tween动画、还有平等种是Frame动画。Tween动画,这种实现方式可使视图组件移动、放大、缩小与生透明度的变通;另一样栽Frame动画,传统的卡通片方法,通过逐一的广播排列好之图来实现,类似电影。

  7、handler机制的原理

  andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler
先进先出原则。Looper类用来保管特定线程内对象期间的音讯交换(Message
Exchange)。

  1)Looper:
一个线程可以生出一个Looper对象,由其来管理是线程里的Message
Queue(消息队列)。

  2)Handler:
你得组织Handler对象来跟Looper沟通,以便push新消息及Message
Queue里;或者接到Looper从Message Queue取出)所送来之信息。

  3) Message Queue(消息队列):用来存放在线程放入的音信。

  4)线程:UI thread 通常就是main
thread,而Android启动程序时见面为它确立一个Message Queue。

  8、说说mvc模式之原理,它以android中的使用

         android的法定建议应用程序的付出以mvc模式。何谓mvc?

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

  l模型(model)对象:是应用程序的关键性有,所有的工作逻辑都该写以该层。

  l视图(view)对象:是应用程序中背转用户界面的一部分。也是在全部mvc架构中用户唯一可视底均等叠,接收用户的输入,显示处理结果。

  l控制器(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里面处理,当然对作业计算相当于操作为是须在的该层的。

  9、Activity的生命周期

  和外手机 平台 的运用 程序 一样,Android的应用程序
的生命周期是深受联合掌控 的,也

  就是说我们写的应用程序命运掌握在他人(系统)的手里,我们无克更改它们,只能修

  适应它。

  简单地说一下为何是如此:我们手机在运行
一个应用程序的时段,有或于上电话

  发上短信
,或者没有电了,这时候程序还见面让搁浅,优先去服务电话的基本功能 ,另

  外系啊无同意你占用太多资源
,至少要确保电话职能吧,所以资源不足的下啊即出可

  能于波及少。

  言归正传,Activity的主干生命周期如下代码 所示:

  Java代码

  public

  class MyActivity extends Activity {

  protected

  void onCreate(Bundle savedInstanceState);

  protected

  void onStart();

  protected

  void onResume();

  protected

  void onPause();

  protected

  void onStop();

protected

  void onDestroy();

  }

  public class MyActivity extends Activity { protected void
onCreate(Bundle savedInstanceState); protected void onStart(); protected
void onResume(); protected void onPause(); protected void onStop();
protected void onDestroy(); }

  你协调写的Activity会按需
重载这些方法,onCreate是不不了底,在一个Activity正常启动之进程被,他们于调用的各个是
onCreate -> onStart -> onResume,
在Activity被提到少的早晚顺序是onPause -> onStop -> onDestroy
,这样即使是一个总体的生命周期,但是有人提问了
,程序正运行在吧来电话了,这个序咋办?中止了呗,如果中止的时段新发底一个Activity是全屏的那么:onPause->onStop
,恢复的时节onStart->onResume ,如果起断
这个应用程序的凡一个Theme为Translucent 或者Dialog
的Activity那么单纯是onPause ,恢复 的当儿onResume 。

  详细介绍一下就几乎单道吃网于召开啊与我们当做呀:

  onCreate: 在此间创建界面 ,做有数据 的初始化工作

  onStart: 到马上无异于步变成用户可见不可互相 的

  onResume: 变成和用户可互相 的,(在activity
栈系统经过储藏室的方法管理这些个

  Activity的极端上面,运行完弹出栈,则归上一个Activity)

  onPause: 到马上同一步是可见但不足互相 的,系统会已动画 等消耗CPU
的事体

  从上文的讲述已经了解,应该当这里保留你的有的数,因为是时刻

  你的顺序的先行级降,有或于网注销。在此保留之数码,应该在

  onResume里读出来,注意:这个方式里开的作业时如差,因为生同样

  单activity不会等到这个办法好才启动

  onstop: 变得不可见 ,被下一个activity覆盖了

  onDestroy:
这是activity被提到少前最后一个受调用方法了,可能是外面类调用finish方

  法或者是系统为节约空间将她小的杀,可以为此isFinishing()来判

  断它,如果您闹一个Progress Dialog在线程中转动,请以onDestroy里

  把他cancel掉,不然当线程结束之时段,调用Dialog的cancel方法会抛

  异常的。

  onPause,onstop, onDestroy,三种植状态 下 activity都产生或被系统干掉

为了保险程序的正确性,你要是于onPause()里写及持久层操作的代码,将用户编辑的始末都封存至存储介质上(一般还是数码库
)。实际工作负以生命周期的浮动而带的题目为够呛多,比如您的应用程序起了新的线程在跑,这时候中断了,你还要去维护好线程,是暂停或者杀掉还是多少回滚,是吧?因为Activity可能吃特别掉,所以线程中使用的变量和一部分界面元素就断要注意了,一般还是动Android的音讯机制
[Handler,Message]来拍卖多线程和界面交互的题材。

  10、让Activity变成一个窗口:Activity属性设定

  讲点轻松的吧,可能有人期待开下的应用程序是一个漂移在手机主界面的事物,那么深

  简单而不过需要装 一下Activity底主题就是好了当AndroidManifest.xml
中定义 Activity的

  地方一样句话:

  Xml代码

  android :theme=”@android:style/Theme.Dialog”

  android:theme=”@android:style/Theme.Dialog”

  这即如您的应用程序变成针对话框的形式弹出来了,或者

  Xml代码

  android:theme=”@android:style/Theme.Translucent”

  android:theme=”@android:style/Theme.Translucent”

  就改为半晶莹剔透底,[友谊提醒-.-]好像之这种activity的特性可以当android.R.styleable
类的AndroidManifestActivity
方法吃看看,AndroidManifest.xml中所有因素的性能的介绍都可参考这类android.R.styleable

  上面说之是性名称,具体产生什么价值是于android.R.style中
可以见见,比如这个”@android:style/Theme.Dialog”
就对应于android.R.style.Theme_Dialog ,(‘_’换成’.’ <
–注意:这个是文章内容不是笑容)就可为此在叙文件
中了,找找类定义和讲述文件被的对应关系虽都明白了。

  11、 你后台的Activity被网回收怎么处置:onSaveInstanceState

当您的顺序中有一个Activity A
在运行时中,主动或被动地运作另一个新的Activity B

  这个时节A会履行

  Java代码

  public

  void onSaveInstanceState(Bundle outState) {

  super.onSaveInstanceState(outState);

  outState.putLong(“id”, 1234567890);

  }

  B 完成以后还要会来找A,
这个上即便生三三两两种情景,一栽是A被回收,一种植是没给回收,被扭

  收的A就如再调用onCreate()方法,不同让直接开行的凡马上回onCreate()里是带上参数

  savedInstanceState,没被吊销的就还是onResume就好了。

  savedInstanceState是一个Bundle对象,你差不多可以管他清楚啊系统辅助您维护的一个Map对象。在onCreate()里你恐怕会见因此到她,如果正常启动onCreate就无见面生出其,所以用底上要看清一下是否为空。

  Java代码

  if(savedInstanceState != null){

  long id = savedInstanceState.getLong(“id”);

  }

  就如官的Notepad教程
里的景况,你正编纂某一个note,突然让搁浅,那么即使拿这note的id记住,再起的时即便足以因这个id去管大note取出来,程序就算整体片。这为是看而的采取需不需要保存什么,比如您的界面就读取一个列表,那就算非需特别记住什么,哦,
没按而用记住滚动条之位置…

  12、 调用同给调用:我们的通信使者Intent

  要说Intent了,Intent就是这个是意图
,应用程序间Intent进行交流,打只电话呀,来单

  电话呀都见面发作Intent,
这个是Android架构的松耦合的精粹部分,大大提高了组件的复用性,比如您如以你的应用程序中点击按钮,给某打电话,很粗略啊,看下代码先:

  Java代码

    Intent intent = new Intent();

  intent.setAction(Intent.ACTION_CALL);

  intent.setData(Uri.parse(“tel:” + number));

  startActivity(intent);

  扔出这样一个意图,系统看到了若的意向就提醒了电话拨号程序,打出去电话。什么读联系人,发短信啊,邮件啊,统统只待扔来intent就吓了,这个有设计
地确实非常好什么。

  那Intent通过什么来报告系统要谁来经受外吗?

  通常采用Intent有有限栽方法,第一栽是直证明要哪一个好像来接纳代码如下:

  Java代码

  Intent intent = new Intent(this, MyActivity.class);

  intent.getExtras().putString(“id”, “1”);

  tartActivity(intent);

  第一种植方法非常显眼,直接指定了MyActivity为接受方,并且传了有数码为MyActivity,在MyActivity里可以就此getIntent()来之顶是intent和数量。

  第二栽不畏需事先押一下AndroidMenifest受到的intentfilter的部署了

  Xml代码

  < intent-filter>

  < action

  android:name=”android.intent.action.VIEW”

  />

  < action

  android:value=”android.intent.action.EDIT”

  />

  < action

  android:value=”android.intent.action.PICK”

  />

  < category

  android:name=”android.intent.category.DEFAULT”

  />

  < data

  android:mimeType=”vnd.android.cursor.dir/vnd.google.note”

  />

  < /intent-filter>

  这其中配备利用了action, data,
category这些事物,那么聪明的您得想到intent里也会发这些事物,然后同匹配不纵找到接收者了吗?

  action其实就是一个图的字符串名称。

  上面立段intent-filter的布文件说明了这个Activity可以承受不同的Action,当然相应的程序逻辑也非同等了,提一下要命
mimeType,他是当ContentProvider里定义的,你只要是上下一心实现一个ContentProvider就了解了,必须指定
mimeType才能够于多少让他人利用。

  不晓得原理说明白没,总结一句子,就是您调用别的界面不是直接new那个界面,而是通过抛来一个intent,让系统辅助你错过调用那个界面,这样即使多松藕合啊,而且称了生命周期被系统管理的准绳。

  想明白category都发生何,Android为你先定制好之action都产生吗等等,请亲自看官方链接Intent

  ps:想知道怎么调用系统应用程序的同学,可以仔细看一下你的logcat,每次运行一个顺序的时段是未是发局部音讯以:

  Starting activity: Intent {
action=android.intent.action.MAINcategories={android.intent.category.LAUNCHER}
flags=0x10200000comp={com.android.camera/com.android.camera.GalleryPicker}
}

  再对照一下Intent的部分set方法,就知道怎么调用咯,希望你喜欢:)

  13. 哪退出Activity?如何安全退出已调用多独Activity的Application?

       对于单一Activity的施用来说,退出很粗略,直接finish()即可。
理所当然,也可以就此killProcess()和System.exit()这样的办法。

只是,对于多Activity的使来说,在打开多个Activity后,如果想在结尾打开的Activity直接退出,上边的方都是从来不就此底,因为上的道都是得了一个Activity而已。
自,网上为有人说可。
纵使好像有人问,在动里什么捕获Home键,有人便会说用keyCode比较KEYCODE_HOME即可,而实际如果无改framework,根本不可能好这等同点同样。
故而,最好要要好亲身试跳一下。

那么,有没有起艺术直接退出整个应用为?
当2.1之前,可以使ActivityManager的restartPackage方法。
它们可一直了所有应用。在采取时需权限android.permission.RESTART_PACKAGES。
留神不要让她的名迷惑。

而,在2.2,这个措施失效了。
每当2.2加加了一个初的法门,killBackgroundProcesses(),需要权限
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基类,处理这些共同过渡问题。

摘自:http://blog.csdn.net/debug2/archive/2011/02/18/6193644.aspx

  14. 央介绍下Android中常用之五栽布局。

     1、 LinearLayout – 线性布局。
orientation – 容器内元素的排列方式。vertical:
子元素等直排列;horizontal: 子元素等水平排列
gravity – 内容之排形式。常用之生 top, bottom, left, right, center 等

2、 AbsoluteLayout – 绝对布局。
layout_x – x 坐标。以左上角为顶点
layout_y – y 坐标。以左上角为顶点

3、 TableLayout – 表格式布局
     
表格布局要为行的款式来管理子控件,其中各级一行即一个TableRow对象,每个TableRow对象可以补加子控件,并且每加入一个空间就一定给增补加了同样列

4、 RelativeLayout – 相对布局。
 layout_centerInParent –
将手上元素放置到那容器内的水平方向及直方向的中央位置(类似之特性有
:layout_centerHorizontal, layout_alignParentLeft 等)
layout_marginLeft – 设置当前元素相对于那个容器的左手边缘的去
layout_below – 放置当前元素到指定的因素的下
  layout_alignRight – 时元素与指定的元素右对同步

5、 FrameLayout – 层叠布局。以左上角为起点,将 FrameLayout
内之要素一层覆盖一层地亮,在帧布局中,先添加的图片会被后加加的图纸覆盖。

摘自:http://javalover00000.javaeye.com/blog/851266

  15. 呼吁介绍下Android的数目存储方。

     Android提供了5栽方法囤数据:
    1、使用SharedPreferences存储数据;
    2、文件存储数据;
    3、SQLite数据库存储数据;
    4、使用ContentProvider存储数据;
    5、网络存储数据;
Android
中的数码存储都是私房的,其他应用程序都是无法访问的,除非通过ContentResolver获取其它程序共享的多少。

摘自:http://www.moandroid.com/?p=319

  16. 告介绍下ContentProvider是什么样促成数据共享的。

一个先后可以由此落实一个Content
provider的虚幻接口将团结的多寡完全暴露出,而且Content
providers是以看似数据库中表的法将数据暴露。Content
providers存储和查找数据,通过她好让具备的应用程序访问到,这也是应用程序之间唯一共享数据的艺术。要惦记要应用程序的多少公开化,可透过2栽艺术:创建一个属于你自己之Content
provider或者将你的数量增长到一个早已存在的Content
provider中,前提是发出雷同数据类型并且发生描绘副Content provider的权能。

争通过同样效仿标准与联合之接口获取其他应用程序暴露的多寡?Android提供了ContentResolver,外界的次第可以透过ContentResolver接口访问ContentProvider提供的数量。
 参考:http://www.moandroid.com/?p=319

  17. 哪启用Service,如何停用Service。

1.先是种植是经调用Context.startService()启动,调用Context.stopService()结束,startService()可以传递参数为Service

2.次种方式是经过调用Context.bindService()启动,调用Context.unbindservice()结束,还得经ServiceConnection访问Service。

在Service每一样破的被关闭过程被,只有onStart可被频繁调用(通过反复startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中不得不吃调用一不好。

参考:http://www.cnblogs.com/feisky/archive/2010/06/14/1758336.html

  18.
登记广播有几栽办法,这些方式发出哪里优缺点?请谈谈Android引入广播机制的图。

android中,不同进程中传递信息要用到广播,可以出少种艺术来兑现。
首先种植方法:在Manifest.xml中注册广播,是相同栽比较推荐的法门,因为它们不待手动注销广播(如果广播未收回,程序退出时可能会见拧)。
切切实实实现在Manifest的application中增长:
<receiver android:name=”.mEvtReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED” />
</intent-filter>
</receiver>
地方两只android:name分别是广播名和播音的动作(这里的动作是意味着系统启动完成),如果只要自己发送一个广播,在代码中吗:
Intent i = new Intent(“android.intent.action.BOOT_COMPLETED”);
sendBroadcast(i);
如此这般,广播就发出去了,然后是收纳。
收纳好新建一个近似,继承至BroadcastReceiver,也可打一个BroadcastReceiver的实例,然后得写onReceive方法,实现如下:
protected BroadcastReceiver mEvtReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(“android.intent.action.BOOT_COMPLETED”)) {
//Do something
}
}
};

次种方法,直接以代码中落实,但用手动注册注销,实现如下:
IntentFilter filter = new IntentFilter();
filter.addAction(“android.intent.action.BOOT_COMPLETED”);
registerReceiver(mEvtReceiver, filter); //这时注册了一个recevier
,名吧mEvtReceiver,然后同用地方的不二法门以更写onReceiver,
末以先后的onDestroy中使撤回广播,实现如下:
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mPlayerEvtReceiver);
}

Android系统受之播报是大面积用于应用程序之间通信的同样栽手段,它仿佛于事件处理机制,不同的地方就是广播的处理是网级别之事件处理过程(一般事件处理是控件级别的)。在这个过程中依然是离开不起来Intent对象,理解广播事件之处理过程,灵活运用广播处理机制,在事关重大的处在数能实现特别之法力,

在Android 中如果要是发送一个播放必须利用sendBroadCast
向系统发送对那个感兴趣的播音接收器中。
利用广播必须要出一个intent 对象自然设置其action动作对象
运用广播必须在部署文件中显式的指明该广播对象
老是收到播放都见面再也生成一个收播放的目标
于BroadCast 中尽量不要处理极其多逻辑问题,建议复杂的逻辑交给Activity 或者
Service 去处理

转自:http://www.dengdeng.name/u/deng/archives/2010/92.html

        
http://www.cnblogs.com/TerryBlog/archive/2010/08/16/1801016.html

  19. 求说明下在单线程模型中Message、Handler、Message
Queue、Looper之间的干。

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

参见:http://hi.baidu.com/���˲���/blog/item/4e576b7c58d742360cd7dac9.html

         http://blog.csdn.net/xuxinyl/archive/2010/12/25/6097560.aspx

  20. AIDL之齐是呀?如何工作?能处理哪些类型的数码?

AIDL全称Android Interface Definition Language(AndRoid接口描述语言)
是相同种借口描述语言;
编译器可以经过aidl文件特别成一段落代码,通过事先定义之接口及一定量个过程中通信进程跨界对象看的目的.AIDL的IPC的建制和COM或CORBA类似,
是依据接口的,但它们是轻量级的。它采取代理类在客户端以及落实层间传递值.
如果要动AIDL, 需要做到2件事务: 1. 引入AIDL的连锁类.; 2.
调用aidl产生的class.理论上, 参数可以传递基本数据类和String,
还有即使是Bundle的派生类, 不过在Eclipse中,目前底ADT不支持Bundle做吧参数,

实际实现步骤如下:

1、创建AIDL文件, 在此文件里定义接口,
该接口定义了不过供应客户端访问的主意以及属性。

2、编译AIDL文件, 用Ant的语句, 可能用手动, 使用Eclipse
plugin的口舌,可以因adil文件自动生产java文件并编译, 不需要人工介入.

3、在Java文件被, 实现AIDL中定义之接口. 编译器会冲AIDL接口,
产生一个JAVA接口。这个接口有一个称也Stub的内部抽象类,它延续扩展了接口并实现了远距离调用需要之几只点子。接下来就是待团结失去贯彻自定义之几个接口了.

4、向客户端提供接口ITaskBinder,
如果写的凡service,扩展该Service并重载onBind
()方法来回到一个落实上述接口的类的实例。

5、在劳动器端回调客户端的函数.
前提是当客户端取的IBinder接口的当儿,要错过注册回调函数, 只有这样,
服务器端才知晓该调用那些函数

AIDL语法很简短,可以为此来声称一个带动一个或者多个法子的接口,也堪传递参数和归值。
由于远距离调用的得,
这些参数和归值并无是任何类型.下面是数AIDL支持之数据类型:

  1. 切莫需import声明的简练Java编程语言类(int,boolean等)

  2. String, CharSequence不待新鲜声明

  3. List, Map和Parcelables类型,
    这些项目内所富含的多寡成员为不得不是简简单单数据类型,
    String等另外比支持之类型.

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

贯彻接口时发出几乎单原则:

.抛来之特别不要回来给调用者. 跨进程抛大处理是匪长的.

.IPC调用是一道的。如果您知一个IPC服务需跨越几毫秒的时日才会得地话,你该避免在Activity的主线程中调用。
也尽管是IPC调用会挂于应用程序导致界面失去响应.
这种情形应当考虑单由一个线程来处理.

.不可知以AIDL接口中扬言静态属性。

IPC的调用步骤:

  1. 声称一个接口类型的变量,该接口类型在.aidl文件被定义。

  2. 实现ServiceConnection。

3.
调用ApplicationContext.bindService(),并以ServiceConnection实现中开展传递.

4.
于ServiceConnection.onServiceConnected()实现着,你见面收一个IBinder实例(被调用的Service).
调用

YourInterfaceName.Stub.asInterface((IBinder)service)将参数转换为YourInterface类型。

  1. 调用接口中定义之法门。
    你毕竟要检测到DeadObjectException异常,该特别在连接断开时吃废来。它仅仅见面让远程方法抛出。

  2. 断开连接,调用接口实例中之ApplicationContext.unbindService()

参考:http://buaadallas.blog.51cto.com/399160/372090

  21. 要说明下Android程序运行时权和文件系统权限的区分。

apk程序是运行在虚拟机上的,对应之是Android独特之权力机制,只有体现到文件系统上时才下linux的权设置。

android系统部分权限是因签名的。

切切实实参见:http://blog.csdn.net/Zengyangtech/archive/2010/07/20/5749999.aspx

  22.
体系上安了余浏览器,能否指定某个浏览器访问指定页面?请证实原因。

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

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

  24、什么是ANR 如何避免她?

  答:ANR:Application Not
Responding,五秒在Android中,活动管理器和窗口管理器这简单单网服务承受监视应用程序的应。当出现下列情况经常,Android就会见显示ANR对话框了:

  对输入事件(如按键、触摸屏事件)的应超过5秒

  意向接受器(intentReceiver)超过10秒钟仍不履行完毕

  Android应用程序完全运转于一个单独的线程中(例如main)。这即表示,任何在主线程中运作的,需要消耗大量时的操作都见面引发ANR。因为此时,你的应用程序已经没机会去响应输入事件与图广播(Intent
broadcast)。

  因此,任何运行于主线程遭遇的方法,都设尽量的唯有做少量之做事。特别是走生命周期中的最主要措施如onCreate()和
onResume()等重新应这么。潜在的比耗时的操作,如访问网络和数据库;或者是开发很非常之计,比如改变位图的轻重缓急,需要在一个独的子线程中成就

(或者是行使异步请求,如数据库操作)。但当时并无代表你的主线程需要上阻塞状态已等待子线程结束

也非需调用Therad.wait()或者Thread.sleep()方法。取而代之的凡,主线程为子线程提供一个句柄(Handler),让子线程在即将收尾的时刻调用它(xing:可以参考Snake的例证,这种方式及以前我们所点的截然不同)。使用这种方法涉及你的应用程序,能够管你的次第对输入保持优良的应,从而避免为输入事件超过5秒钟不为处理要有的ANR。这种实践需要动用到独具显示用户界面的线程,因为他俩还面临着同等的过问题。

  25、什么动静会造成Force Close ?如何避免?能否捕获导致该的杀?

  答:一般像空指针啊,可以拘留从logcat,然后针对许交程序中 来化解错误

  26、Android本身的api并未声明会抛来十分,则该于运行时有无可能抛出runtime异常,你碰到过吧?诺有的说话会导致什么问题?如何化解?

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

  答:一个activity呈现了一个用户可以操作的可视化用户界面

  一个service不带有可见的用户界面,而是以后台无限地运作

  可以连接至一个正运行的劳务遭遇,连接后,可以经劳动被暴露无遗出来的借口和那进行通信

  一个broadcast
receiver是一个收播放消息并作出回答的component,broadcast
receiver没有界面

  intent:content provider在收取及ContentResolver的求时于激活。

  activity, service和broadcast
receiver是于称intents的异步消息激活的。

一个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文件中声称的。

  28、IntentService有何长?

  答:IntentService 的好处

  * Acitivity的经过,当处理Intent的下,会生一个遥相呼应之Service

  * Android的过程处理器现在会尽可能的匪kill掉你

  * 非常容易使用

  29、横竖屏切换时activity的生命周期?

  1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时见面实行同样糟糕,切竖屏时会见履行两蹩脚

  2、设置Activity的android:configChanges=”orientation”时,切屏还是会再度调用各个生命周期,切横、竖屏时单会尽同一次于

  3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不见面再也调用各个生命周期,只会实施onConfigurationChanged方法

  30. 争以SQLite数据库(dictionary.db文件)与apk文件共发布?

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

  31. 争拿打开res aw目录中之数据库文件?

  解答:在Android中不能够一直打开res
aw目录中之数据库文件,而要在次第一软启动时将拖欠公文复制到手机内存还是SD卡的某个目录中,然后又打开该数据库文件。复制的骨干措施是运getResources().openRawResource方法赢得res
aw目录中资源的
InputStream对象,然后以该InputStream对象中之数勾勒副另外的目录中相应文件中。在Android
SDK中好用SQLiteDatabase.openOrCreateDatabase方法来开辟任意目录中的SQLite数据库文件。

  32. Android引入广播机制的意向?

  答:a:从MVC的角度考虑(应用程序内)

 其实对是问题之早晚还好这样问,android为什么要生那么4格外组件,现在之移位支付模型基本上也是照搬的web那无异套MVC架构,只不过是转了点嫁妆而已。android的季不胜组件本质上虽是为实现移动或说嵌入式设备上之MVC架构,它们中间有时是平等栽相互依存的关系,有时候又是平种植上关系,引入广播机制得以方便几要命组件的音与数量交互。

  b:程序中互通信息(例如当自己之应用程序内监听系统来电)

  c:效率达(参考UDP的播音协议在局域网的方便性)

  d:设计模式上(反转控制的一样种植使,类似监听者模式)

转自:http://www.cnmsdn.com/html/201101/1295431222ID9251.html

       33、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中便从未有过放音乐
播放器,全部指第三方出,缺少了产品的统一性。

34、android 中生出啊几种植解析xml的近乎?官方推荐哪种?以及它们的原理和区别。

XML解析主要发生三种植方法,SAX、DOM、PULL。常规在PC上开我们用Dom相对轻松来,但有特性敏感的数据库或手机及还是要采取SAX方式,SAX读取是才为的,优点:不占用内存空间、解析属性方便,但缺点就是是于套嵌多个支行来说处理不是死有利。而DOM方式会将全XML文件加载到内存中去,这里Android开发网提醒大家该方法以寻觅方面可跟XPath很好的做而数据量不是格外死引进用,而PULL常常因此在J2ME对于节点处理比较好,类似SAX方式,同样不行节省内存,在J2ME中我们经常以的KXML库来分析。

详细情况请参考
http://blog.csdn.net/Android_Tutor/archive/2010/09/17/5890835.aspx

                           
http://www.linuxidc.com/Linux/2010-11/29768.htm

                          
http://littlefermat.blog.163.com/blog/static/59771167200981853037951/

35、DDMS和TraceView的区别?

DDMS是一个程序执行查看器,在内部可以看见线程和库房等信息,TraceView是次性能分析器

36、Activity被回收了怎么惩罚?

止出任何启用了

37、java中安引用本地语言

可以用JNI接口

38、谈谈Android的IPC机制

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

39、NDK是什么

NDK是局部列工具的聚集,

NDK提供了扳平层层之家伙,帮助开发者迅速的支付C/C++的动态库,并能半自动将so和java
应用打成apk包。

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

40 描述一下android的系架构

android系统架构分从生于上也linux
内核层、运行库、应用程序框架层、和应用程序层

linuxkernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功效。

  libraries和
androidruntime: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的统筹以及运行机制,也即还能开整个应用层的支付。

发表评论

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