部分安卓面试题

1、Androiddvm的历程和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取出)所送来的音讯。

  1. 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的运用程序
的生命周期是被统一掌控 的,也

就是说大家写的应用程序命局通晓在人家(系统)的手里,大家不可以改变它,只能上学

适应它。

简单易行地说一下怎么是那样:大家手机在运转
一个应用程序的时候,有可能打进去电话

发进来短信
,或者没有电了,那时候程序都会被暂停,优先去服务电话的基本功用 ,另

外系统也不容许你占用太多资源
,至少要保管电话职能吗,所以资源不足的时候也就有可

能被干掉。

766游戏网官网,言归正传,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代码
< 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”
/>
那里面配备利用了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方法,就领会怎么调用咯,希望您欣赏:)

  1. 何以退出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
  2. 请介绍下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
  3. 请介绍下Android的数据存储方式。
    Android提供了5种艺术存储数据:
    1、使用SharedPreferences存储数据;
    2、文件存储数据;
    3、SQLite数据库存储数据;
    4、使用ContentProvider存储数据;
    5、网络存储数据;
    Android
    中的数据存储都是私有的,其余应用程序都是不可能访问的,除非通过ContentResolver获取其他程序共享的数目。
    摘自:http://www.moandroid.com/?p=319
  4. 请介绍下ContentProvider是什么兑现数据共享的。
    一个顺序可以经过已毕一个Content
    provider的虚幻接口将团结的多寡完全暴光出来,而且Content
    providers是以看似数据库中表的点子将数据暴露。Content
    providers存储和搜索数据,通过它可以让具备的应用程序访问到,那也是应用程序之间唯一共享数据的章程。要想使应用程序的多少公开化,可经过2种艺术:创设一个属于你协调的Content
    provider或者将您的数据增加到一个早就存在的Content
    provider中,前提是有雷同数据类型并且有写入Content provider的权力。
    哪些通过一套标准及联合的接口获取别的应用程序暴光的数目?Android提供了ContentResolver,外界的次第可以经过ContentResolver接口访问ContentProvider提供的数额。
    参考:http://www.moandroid.com/?p=319
  5. 如何启用Service,怎样停用Service。
    1.先是种是由此调用Context.startService()启动,调用Context.stopService()截止,startService()可以传递参数给Service
    2.次之种方法是经过调用Context.bindService()启动,调用Context.unbindservice()截止,还是能够透过ServiceConnection访问Service。
    在瑟维斯每五回的开启关闭进程中,只有onStart可被频仍调用(通过反复startService调用),其余onCreate,onBind,onUnbind,onDestory在一个生命周期中只好被调用五遍。
    参考:http://www.cnblogs.com/feisky/archive/2010/06/14/1758336.html
  6. 注册广播有两种艺术,这一个格局有啥优缺点?请谈谈Android引入广播机制的意向。
    android中,不一致进度之间传递信息要用到广播,可以有三种格局来贯彻。
    第一种艺术:在Manifest.xml中注册广播,是一种相比推荐的格局,因为它不须要手动注销广播(若是广播未撤销,程序退出时可能会出错)。
    切实落到实处在Manifest的application中加上:
    地点三个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
  7. 请表明下在单线程模型中Message、Handler、Message
    Queue、Looper之间的关系。
    大约的说,Handler获取当前线程中的looper对象,looper用来从存放Message的MessageQueue中取出Message,再有Handler举行Message的分发和拍卖
    参见:http://hi.baidu.com/%C1%F7%C0˲%BB%D0%DD/blog/item/4e576b7c58d742360cd7dac9.html
    http://blog.csdn.net/xuxinyl/archive/2010/12/25/6097560.aspx
  8. 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帮忙的数据类型:
  9. 不须要import评释的简易Java编程语言类型(int,boolean等)
  10. String, CharSequence不须求独特申明
  11. List, Map和Parcelables类型,
    这么些品种内所涵盖的数量成员也只能是概括数据类型,
    String等其他比支持的类型.
    (其余: 我没尝试Parcelables, 在Eclipse+ADT下编译不过,
    或许未来会所有援救).
    心想事成接口时有多少个规范:
    .抛出的十分不要回来给调用者. 跨进度抛至极处理是不可取的.
    .IPC调用是同步的。借使你通晓一个IPC服务须要跨越几飞秒的时间才能成功地话,你应当避免在Activity的主线程中调用。
    也就是IPC调用会挂起应用程序导致界面失去响应.
    那种景况应当考虑单起一个线程来处理.
    .无法在AIDL接口中宣称静态属性。
    IPC的调用步骤:
  12. 声称一个接口类型的变量,该接口类型在.aidl文件中定义。
  13. 实现ServiceConnection。
  14. 调用ApplicationContext.bindService(),并在ServiceConnection已毕中举办传递.
  15. 在ServiceConnection.onServiceConnected()完毕中,你会接到一个IBinder实例(被调用的Service).
    调用
    YourInterfaceName.Stub.asInterface((IBinder)service)将参数转换为YourInterface类型。
  16. 调用接口中定义的点子。
    你总要检测到DeadObjectException极度,该更加在连接断开时被抛出。它只会被远程方法抛出。
  17. 断开连接,调用接口实例中的ApplicationContext.unbindService()
    参考:http://buaadallas.blog.51cto.com/399160/372090
  18. 请表达下Android程序运行时权限与文件系统权限的分别。
    apk程序是运作在虚拟机上的,对应的是Android独特的权限机制,唯有显示到文件系统上时才使用linux的权杖设置。
    android系统部分权限是基于签名的。
    切实参见:http://blog.csdn.net/Zengyangtech/archive/2010/07/20/5749999.aspx
  19. 系统上安装了各种浏览器,能仍旧不能指定某浏览器访问指定页面?请证实原因。
    透过直接发送Uri把参数带过去,或者通过manifest里的intentfilter里的data属性
  20. 有一个一维整型数组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、简要说Bellamy下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来说,它指定了请求的操作名称和待操作数据的URIIntent对象足以显式的指定一个对象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方法
  1. 怎么将SQLite数据库(dictionary.db文件)与apk文件一起发表?
    解答:可以将dictionary.db文件复制到Eclipse Android工程中的res
    aw目录中。所有在res
    aw目录中的文件不会被减去,那样能够直接领取该目录中的文件。可以将dictionary.db文件复制到res
    aw目录中
  2. 如何将开辟res aw目录中的数据库文件?
    解答:在Android中不能够直接打开res
    aw目录中的数据库文件,而急需在程序第五遍启动时将该文件复制到手机内存或SD卡的某部目录中,然后再打开该数据库文件。复制的为主措施是使用getResources().openRawResource方法赢得res
    aw目录中资源的
    InputStream对象,然后将该InputStream对象中的数据写入其它的目录中相应文件中。在Android
    SDK中可以利用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。
  3. 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的进化而言,有利于积累人气,那里的人气席卷消费者和厂商,而对此消费者来讲,随大的收益正是丰裕的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价格购得心仪的无绳电话机。
    二、挣脱运营商的羁绊

    过去很长的一段时间,尤其是在欧美地区,手机接纳往往受到运营商制约,使用什么效果衔接什么网络,大致都饱受运营商的主宰。从上年小米上市
    ,用户可以越发有利于地接连网络,运营商的制缩短少。随着EDGE、HSDPA这么些2G至3G移动网络的逐步对接和升高,手机随机接入互联网已不是营业商口中
    的笑谈,当你可以因此手机IM软件方便地进行即时聊天时,再纪念不久前几天价的彩信和图铃下载业务,是还是不是像惊恐不已的梦一样?
    网络巨头谷歌(Google)牵动的Android终端天生就有网络特色,将让用户离网络更近。
    三、丰盛的硬件选用
    这点或者与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功用特色各具的各样产品。成效上的差距和特色,却不
    会潜移默化到数码同步、甚至软件的万分,好比你从HUAWEI Symbian风格手机
    一下改用苹果 诺基亚,同时还可将Symbian中有口皆碑的软件带到Motorola上选用、联系人等材料尤其可以方便地更换,是否不行有益啊?
    四、不受任何限制的开发商
    Android平台提须要第三方开发商一个要命科普、自由的条件,不会合临种种条条框框的阻扰,不问可知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的次第和游玩如可控制正是留给Android难点之一。
    五、无缝结合的谷歌应用
    现在叱诧互连网的谷歌已经度过10年度历史,从寻觅巨人到健全的网络渗透,谷歌服务如地图、邮件、搜索等已经成为连年用户和网络的首要难题,而Android平台手机将无缝结合那个优质的谷歌服务。
    再说Android的5大不足:
    一、安全和隐衷
    鉴于手机
    与互连网的紧密联系,个人隐衷很难得到保守。除了上网进度中注意或不小心留下的私有足迹,谷歌(Google)这几个大个子也时刻站在您的身后,洞穿任何,因而,互连网的言犹在耳将会带来新一轮的隐情风险。
    二、首先开卖Android手机的不是最命宫营商
    众 所周知,T-Mobile在23日,于美利坚联邦合众国London发表了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、mp4、
    aac、amr、jpg和png等重重的多媒体文件格式。android的runtime负责解释和实施生成的dalvik格式的字节码。
    applicationframework(应用软件架构),java应用程序开发人士首假设采取该层封装好的api举办急忙支付。
    applications:该层是java的选取程序层,android内置的googlemaps、e-mail、即时通讯工具、浏览器、mp4播放
    器等处于该层,java开发人士开发的先后也处在该层,而且和放手的应用程序具有同等的职位,可以调用内置的应用程序,也得以替换内置的应用程序。
    地点的五个层次,下层为上层服务,上层必要下层的支撑,调用下层的劳务,那种严格分层的办法带来的偌大的平安、灵活性和可伸张性,使得差别层的开发人士能够依照专业专心特定层的费用。
    android应用程序使用框架的api并在框架下运作,那就拉动了程序支付的中度一致性,另一方面也告知我们,要想写出优质连忙的程序就亟须对任何
    applicationframework举办非凡深刻的明白。了然applicationframework,你就可以真正的知晓android的设计
    和运行机制,也就更可以驾驶整个应用层的支出。

发表评论

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