部分安卓面试题

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里面处理,当然对业务总结等操作也是要放在的该层的。

766游戏网官网,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代码
< 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),怎么着停用Service。
    1.率先栽是经过调用Context.start瑟维斯(Service)(Service)()启动,调用Context.stopService(Service)()截至,startService()可以传递参数为Service
    2.亚种艺术是经过调用Context.bindService()启动,调用Context.unbindservice()停止,还得经ServiceConnection访问瑟维斯(Service)。
    在瑟维斯(Service)(Service)每一样坏的开关闭过程中,只有onStart可被频繁调用(通过反复startService(Service)调用),其他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);
    这么,广播就发出去了,然后是收纳。
    收纳好新建一个接近,继承至布罗德castReceiver,也足以建造一个布罗德(Broad)castReceiver的实例,然后得写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 中若如发送一个播必须使用send布罗德Cast
    向网发送对这感兴趣之播放接收器中。
    运用广播必须要生一个intent 对象自然设置其action动作对象
    动用广播必须在配置文件中显式的指明该广播对象
    老是接到播放都会晤重生成一个收播放的目的
    当布罗德Cast 中尽量不要处理极其多逻辑问题,提议复杂的逻辑交给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)(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.bind瑟维斯(Service)(),并在瑟维斯Connection实现中举行传递.
  15. 以瑟维斯(Service)Connection.onServiceConnected()实现中,你相会接到一个IBinder实例(被调用的瑟维斯(Service)(Service)).
    调用
    YourInterfaceName.Stub.asInterface((IBinder)service)将参数转换为YourInterface类型。
  16. 调用接口中定义的法子。
    你究竟要检测及DeadObjectException相当,该大在连接断开时为丢来。它才会面于远程方法抛出。
  17. 断开连接,调用接口实例中之ApplicationContext.unbind瑟维斯(Service)()
    参考: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、简要解释一下activity、 intent 、intent
    filter、service、布罗德(Broad)case、布罗德(Broad)caseReceiver
    报经:一个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、Intent瑟维斯(Service)(Service)有何长?
    答: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的上扬而言,有利于积累人气,这里的人气席卷消费者和厂商,而对于顾客来讲,随大之收益正是长的软件资源。开放的阳台为相会带重新怪竞争,如此一来,消费者将可就此更不比的价位购得心仪之无绳电话机。
    仲、挣脱运营商的律

    过去这些丰裕之一段时间,特别是在欧美地区,手机采纳往往面临运营商制约,使用什么效用衔接什么网络,几乎都受运营商的决定。从2018年黑莓上市
    ,用户可进一步便于地连接网络,运营商的制约裁减。随着EDGE、HSDPA这一个2G届3G平移网络的逐级对接和擢升,手机随意接入网络已无是运营商口中
    的笑料,当你可以经手机IM软件方便地拓展这聊天时,再记忆不久前日价的彩信和图铃下充斥业务,是勿是如噩梦一样?
    互联网巨头Google推动的Android终端天生就是发出网特征,将为用户距离互联网更接近。
    老三、丰盛的硬件选取
    旋即
    一点要么与Android平台的开放性相关,由于Android的开放性,众多底厂商会推出千奇百怪,功用特色各具的多种产品。功效上之别与特点,却非
    会影响及数码并、甚至软件之匹配,好于你于Samsung Symbian风格手机
    一下改用苹果 vivo,同时还而将Symbian中优异之软件带至金立上运、联系人等材料更加可以一本万利地变换,是免是蛮便宜呢?
    季、不深受任何限制的开发商
    Android平台提供于第三着开发商一个相当周边、自由之环境,不汇合被各样条条框框的阻扰,不问可知,会发多少新颖别致的软件会诞生。但为时有暴发那两面性,血腥、暴力、情色方面的主次及娱乐一经可控制正是留给Android难题之一。
    五、无缝结合的谷歌应用
    今叱诧互联网的谷歌已经走过10寒暑历史,从寻觅巨人到到的互联网渗透,Google服务使地图、邮件、搜索等曾化为连接用户与互联网的重大纽带,而Android平台手机用无缝结合那些优质之Google服务。
    再说Android的5大不足:
    同样、安全与隐私
    由手机
    与互联网的紧密联系,个人隐私很麻烦拿到保守。除了上网过程遭到注意或未留意留下的私足迹,Google这个大个子也每一日站在你的身后,洞穿任何,由此,互联网的念兹在兹将汇合带动新一轮子的难言之隐危机。
    第二、首先开卖Android手机的无是极可怜运营商
    众 所周知,T-Mobile在23日,于United States伦敦发布了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)(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、即通常通信工具、浏览器、mp4播放
    器等处该层,java开发人士开发的先后为处在该层,而且跟放手的应用程序具有同等的职位,可以调用内置的应用程序,也得以替换内置的应用程序。
    下边的季只层次,下层为上层服务,上层需要下层之支撑,调用下层之服务,这种严刻分层的法带的巨大的风平浪静、灵活性与而增添性,使得不同层的开发人士可以按标准专心特定层的开。
    android应用程序使用框架的api并在框架下运行,那便带了次开发之低度一致性,另一方面为告诉我们,要记挂写有优质高效之先后即使无法不对普
    applicationframework举办充足深入之知。了然applicationframework,你虽然足以真正的喻android的规划
    和运行机制,也尽管重会驾驶整个应用层的开支。

发表评论

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