1、Androiddvm的进程和Linux的进程,应用程序的进程是否为同一个概念
DVM指dalivk的虚拟机。每个Android应用程序都在它自己的进程中执行,都拥有一个独立的Dalvik虚拟机实例。而每个DVM都是在Linux中的一个进程,所以说能够觉得是同一个概念。
2、sim卡的EF文件有何作用
sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身能够有自己的操作系统,EF就是作存储并和手机通讯用的
3、嵌入式操作系统内存管理有哪几种,各有何特性
页式,段式,段页,用到了MMU,虚拟空间等技术
4、什么是嵌入式实时操作系统,Android操作系统属于实时操作系统吗
5、一条最长的短信息约占多少byte
中文70(包含标点),英文160,160个字节。
6、android中的动画有哪几类,它们的特点和差别是什么
两种,一种是Tween动画、另一种是Frame动画。Tween动画,这样的实现方式能够使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
7、handler机制的原理
andriod提供了Handler和Looper来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
1)Looper:一个线程能够产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler:你能够构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从MessageQueue取出)所送来的消息。
3)MessageQueue(消息队列):用来存放线程放入的消息。
4)线程:UIthread通常就是mainthread,而Android启动程序时会替它建立一个MessageQueue。
8、说说mvc模式的原理,它在android中的运用
MVC(Model_view_controller)”模型_视图_控制器”。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同一时候改变两者。仅仅要Controller改变了Models的数据或者属性,全部依赖的View都会自己主动更新。类似的,仅仅要Contro
9、Activity的生命周期
和其它手机平台的应用程序一样,Android的应用程序的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,仅仅能学习并适应它。
言归正传,Activity的基本生命周期例如以下代码所看到的:
Java代码
1.public
2.classMyActivityextendsActivity{
3.protected
4.voidonCreate(BundlesavedInstanceState);
5.
6.protected
7.voidonStart();
8.
9.protected
10.voidonResume();
11.
12.protected
13.voidonPause();
14.
15.protected
16.voidonStop();
17.
18.protected
19.voidonDestroy();
20.}
21.
22.publicclassMyActivityextendsActivity{
protectedvoidonCreate(BundlesavedInstanceState);
protectedvoidonStart();
protectedvoidonResume();
protectedvoidonPause();
protectedvoidonStop();
protectedvoidonDestroy();
}
具体介绍一下这几个方法中系统在做什么以及我们应该做什么:
onCreate:在这里创建界面,做一些数据的初始化工作
onStart:到这一步变成用户可见不可交互的
onResume:变成和用户可交互的,(在activity栈系统通过栈的方式管理这些个
Activity的最上面,执行完弹出栈,则回到上一个Activity)
onstop:变得不可见,被下一个activity覆盖了
onDestroy:这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它临时性的干掉,能够用isFinishing()来推断它,假设你有一个ProgressDialog在线程中转动,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常的。
onPause,onstop,onDestroy,三种状态下activity都有可能被系统干掉
10、让Activity变成一个窗体:Activity属性设定
讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么非常简单你仅仅须要设置一下Activity的主题就能够了在AndroidManifest.xml中定义Activity的地方一句话:
Xml代码
1.android:theme="@android:style/Theme.Dialog"
2.
3.android:theme="@android:style/Theme.Dialog"
android:theme="@android:style/Theme.Dialog"
这就使你的应用程序变成对话框的形式弹出来了,或者
1.android:theme="@android:style/Theme.Translucent"
3.android:theme="@android:style/Theme.Translucent"
android:theme="@android:style/Theme.Translucent"
就变成半透明的,[友情提示-.-]类似的这样的activity的属性能够在android.R.styleable类的AndroidManifestActivity方法中看到,AndroidManifest.xml中全部元素的属性的介绍都能够參考这个类android.R.styleable
11、你后台的Activity被系统回收怎么办:onSaveInstanceState
当你的程序中某一个ActivityA在执行时中,主动或被动地执行还有一个新的ActivityB这个时候A会执行
2.voidonSaveInstanceState(BundleoutState){
3.super.onSaveInstanceState(outState);
4.outState.putLong("id",1234567890);
5.}
public
voidonSaveInstanceState(BundleoutState){
super.onSaveInstanceState(outState);
outState.putLong("id",1234567890);
B完毕以后又会来找A,这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A就要又一次调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上參数savedInstanceState,没被收回的就还是onResume就好了。
savedInstanceState是一个Bundle对象,你基本上能够把他理解为系统帮你维护的一个Map对象。在onCreate()里你可能会用到它,假设正常启动onCreate就不会有它,所以用的时候要推断一下是否为空。
1.if(savedInstanceState!=null){
2.longid=savedInstanceState.getLong("id");
3.}
if(savedInstanceState!=null){
longid=savedInstanceState.getLong("id");
就像官方的Notepad教程里的情况,你正在编辑某一个note,突然被中断,那么就把这个note的id记住,再起来的时候就能够依据这个id去把那个note取出来,程序就完整一些。这也是看你的应用需不须要保存什么,比方你的界面就是读取一个列表,那就不须要特殊记住什么,哦,没准你须要记住滚动栏的位置...
12、调用与被调用:我们的通信使者Intent
1.Intentintent=newIntent();
2.intent.setAction(Intent.ACTION_CALL);
3.intent.setData(Uri.parse("tel:"+number));
4.startActivity(intent);
Intentintent=newIntent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
那Intent通过什么来告诉系统须要谁来接受他呢
通常使用Intent有两种方法,第一种是直接说明须要哪一个类来接收代码例如以下:
1.Intentintent=newIntent(this,MyActivity.class);
2.intent.getExtras().putString("id","1");
3.tartActivity(intent);
Intentintent=newIntent(this,MyActivity.class);
intent.getExtras().putString("id","1");
tartActivity(intent);
第一种方式非常明显,直接指定了MyActivity为接受者,而且传了一些数据给MyActivity,在MyActivity里能够用getIntent()来的到这个intent和数据。
另外一种就须要先看一下AndroidMenifest中的intentfilter的配置了
android:name="android.intent.action.VIEW" /> android:value="android.intent.action.EDIT" android:value="android.intent.action.PICK" android:name="android.intent.category.DEFAULT" 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,每次执行一个程序的时候是不是有一些信息比方: Startingactivity:Intent{action=android.intent.action.MAINcategories={android.intent.category.LAUNCHER}flags=0x10200000comp={com.android.camera/com.android.camera.GalleryPicker}} 再对比一下Intent的一些set方法,就知道怎么调用咯,希望你喜欢:) 13、什么是ANR怎样避免它 答:ANR:ApplicationNotResponding,五秒 在Android中,活动管理器和窗体管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了: 对输入事件(如按键、触摸屏事件)的响应超过5秒 意向接受器(intentReceiver)超过10秒钟仍未运行完成 因此,不论什么执行在主线程中的方法,都要尽可能的仅仅做少量的工作。特别是活动生命周期中的重要方法如onCreate()和onResume()等更应如此。潜在的比較耗时的操作,如訪问网络和数据库;或者是开销非常大的计算,比方改变位图的大小,须要在一个单独的子线程中完毕(或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程须要进入堵塞状态已等待子线程结束--也不须要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程在即将结束的时候调用它(xing:可以參看Snake的样例,这样的方法与曾经我们所接触的有所不同)。使用这样的方法涉及你的应用程序,可以保证你的程序对输入保持良好的响应,从而避免由于输入事件超过5秒钟不被处理而产生的ANR。这样的实践须要应用到全部显示用户界面的线程,由于他们都面临着相同的超时问题。 14、什么情况会导致ForceClose怎样避免是否能捕获导致其的异常 答:一般像空指针啊,能够看起logcat,然后相应到程序中来解决错误 16、简要解释一下activity、intent、intentfilter、service、Broadcase、BroadcaseReceiver 答:一个activity呈现了一个用户能够操作的可视化用户界面 一个service不包括可见的用户界面,而是在后台无限地执行 能够连接到一个正在执行的服务中,连接后,能够通过服务中暴露出来的借口与其进行通信 一个broadcastreceiver是一个接收广播消息并作出回应的component,broadcastreceiver没有界面 intent:contentprovider在接收到ContentResolver的请求时被激活。 activity,service和broadcastreceiver是被称为intents的异步消息激活的。 一个intent是一个Intent对象,它保存了消息的内容。对于activity和service来说,它指定了请求的操作名称和待操作数据的URI 17、IntentService有何长处 答:IntentService的优点 *Acitivity的进程,当处理Intent的时候,会产生一个相应的Service *Android的进程处理器如今会尽可能的不kill掉你 *很easy使用 18、横竖屏切换时候activity的生命周期 1、不设置Activity的android:configChanges时,切屏会又一次调用各个生命周期,切横屏时会运行一次,切竖屏时会运行两次 2、设置Activity的android:configChanges="orientation"时,切屏还是会又一次调用各个生命周期,切横、竖屏时仅仅会运行一次 3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会又一次调用各个生命周期,仅仅会运行onConfigurationChanged方法 19.怎样将SQLite数据库(dictionary.db文件)与apk文件一起公布 解答:能够将dictionary.db文件拷贝到EclipseAndroidproject中的resaw文件夹中。全部在resaw文件夹中的文件不会被压缩,这样能够直接提取该文件夹中的文件。能够将dictionary.db文件拷贝到resaw文件夹中 20.怎样将打开resaw文件夹中的数据库文件 解答:在Android中不能直接打开resaw文件夹中的数据库文件,而须要在程序第一次启动时将该文件拷贝到手机内存或SD卡的某个文件夹中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得resaw文件夹中资源的InputStream对象,然后将该InputStream对象中的数据写入其它的文件夹中对应文件里。在AndroidSDK中能够使用SQLiteDatabase.openOrCreateDatabase方法来打开随意文件夹中的SQLite数据库文件。 21.Android引入广播机制的用意 答:a:从MVC的角度考虑(应用程序内) 事实上回答这个问题的时候还能够这样问,android为什么要有那4大组件,如今的移动开发模型基本上也是照搬的web那一套MVC架构,仅仅只是是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制能够方便几大组件的信息和数据交互。 b:程序间互通消息(比如在自己的应用程序内监听系统来电) c:效率上(參考UDP的广播协议在局域网的方便性) d:设计模式上(反转控制的一种应用,类似监听者模式) onCreate->onStart->onRemuse->onPause->onStop->onRestart->onDestroy 2.假设后台的Activity因为某种原因被系统回收,怎样在回收之前保存当前状态。 onSaveInstanceState(). 程序中的某一个ActivityA在执行时,主动或被动的执行还有一个新的ActivityB,这个时候A会执行onSaveInstanceState()。B完毕以后又回来找A,这个时候有两种情况:一是A被回收,二是A没有被回收,被回收的A就要又一次调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了參数savedInstanceState;而没被回收的就直接执行onResume(),跳过onCreate()。 3.怎样将一个Activity设置成窗体样式。 在AndroidManifext.xml中Activity定义处加入 android:theme="@android:style/Theme.Dialog"或 android:theme="@android:style/Theme.Translucent"。 4.怎样退出Activity?怎样安全退出已调用多个Activity的Application? 1.Activity.finish(); 也能够用killProcess()和System.exit()这个方案 2.用ActivityManager的restartPackage方法 5.请介绍下android大众经常使用的五种布局。 FrameLayout(框架布局) 仅仅能够有一个控件,而且不能设计这个控件的位置,控件会放在左上角 LinearLayout(线性布局) 一行仅仅能控制一个控件的线性布局,所以当有非常多控件须要在一个界面中列出时,能够用LinearLayout布局 AbsoluteLayout(绝对布局) 能够放置多个控件,而且能够自定义控件的x,y的位置 RelativeLayout(相对布局) 比方要在一行上显示多个控件,这时就要用到相对布局 TableLayout(表格布局) 将子元素的位置分配到行或列中,一个TableLayout由很多的TableRow组成 6.请介绍下android的数据存储方式。 SharedPreferences方式 用来存储”key-valuepaires”格式的数据,它是一个轻量级的键值存储机制,仅仅能够存储基本数据类型,能够通过它保存一些上次用户所做的改动操作 文件存储方式 它通过FileInputStream和FileOutputStream对文件进行操作。可是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其它应用程序的文件,假设要共享数据就用ContentProviders SQLite数据库方式 Android提供的一个标准的数据库,支持SQL语句 内容提供器(Contentprovider)方式 是全部应用程序之间数据存储和检索的桥梁,它的作用是使得各个应用程序之间实现数据共享 网络存储方式 通过网络来存储和获取数据 7。请介绍下ContentProvider是怎样实现数据共享的。 Android提供了ContentProvider,一个程序能够通过实现一个ContentProvider的抽象接口将自己的数据全然暴露出去,并且ContentProviders是以类似数据库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,仅仅只是是採用URI来表示外界须要訪问的“数据库”。外部訪问通过ContentResolver去訪问并操作这些被暴露的数据。 8。怎样启用Service,怎样停用Service。 intent.setClass(this,cba.class); startService(intent); stopService(intent); 9。注冊广播有几种方式,这些方式有何优缺点?Android引入广播机制的用意。 2种方式 1.在androidmainfest.xml中注冊 2. 3. 4. 5. 6. 7.缺点:常驻型,占资源比較大 9.registerReceiver(receiver,filter);BroadcastReceiver更新UI一般用这样的方法 10.请解释下在单线程模型中Message,Handler,MessageQueue,Looper之间的关系。 Message Message消息,理解为线程间交流的信息,处理数据后台线程须要更新UI,则发送Message内含一些数据给UI线程。 2.Handler Handler处理者,是Message的主要处理者,负责Message的发送,Message内容的运行处理。后台线程就是通过传进来的Handler对象引用来sendMessage(Message)。而使用Handler,须要implement该类的handleMessage(Message) 方法,它是处理这些Message的操作内容,比如UpdateUI。通常须要子类化Handler来实现handleMessage方法。 MessageQueue MessageQueue消息队列,用来存放通过Handler公布的消息,依照先进先出运行。 每一个messagequeue都会有一个相应的Handler。Handler会向messagequeue通过两种方法发送消息:sendMessage或post。这两种消息都会插在messagequeue队尾并按先进先出运行。但通过这两种方法发送的消息运行的方式略有不同:通过sendMessage发送的是一个message对象,会被Handler的handleMessage()函数处理;而通过post方法发送的是一个runnable对象,则会自己运行。 4.Looper Looper是每条线程里的MessageQueue的管家。Android没有Global的MessageQueue,而Android会自己主动替主线程(UI线程)建立MessageQueue,但在子线程里并没有建立MessageQueue。所以调用Looper.getMainLooper()得到的主线程的Looper不为NULL,但调用Looper.myLooper()得到当前线程的Looper就有可能为NULL。 对于子线程使用Looper,APIDoc提供了正确的用法: 11.AIDL的全程是什么?怎样工作?能处理哪些类型的数据? AIDL的英文全称是AndroidInterfaceDefineLanguage 当A进程要去调用B进程中的service时,并实现通信,我们通常都是通过AIDL来操作的 Aproject: 首先我们在net.blogjava.mobile.aidlservice包中创建一个RemoteService.aidl文件,在里面我们自己定义一个接口,含有方法get。ADT插件会在gen文件夹下自己主动生成一个RemoteService.java文件,该类中含有一个名为RemoteService.stub的内部类,该内部类中含有aidl文件接口的get方法。 说明一:aidl文件的位置不固定,能够随意 然后定义自己的MyService类,在MyService类中自己定义一个内部类去继承RemoteService.stub这个内部类,实现get方法。在onBind方法中返回这个内部类的对象,系统会自己主动将这个对象封装成IBinder对象,传递给他的调用者。 其次须要在AndroidManifest.xml文件里配置MyService类,代码例如以下: 为什么要指定调用AIDL服务的ID,就是要告诉外界MyService这个类可以被别的进程訪问,仅仅要别的进程知道这个ID,正是有了这个ID,Bproject才干找到Aproject实现通信。 说明:AIDL并不须要权限 Bproject: 首先我们要将Aproject中生成的RemoteService.java文件复制到Bproject中,在bindService方法中绑定aidl服务 绑定AIDL服务就是将RemoteService的ID作为intent的action參数。 说明:假设我们单独将RemoteService.aidl文件放在一个包里,那个在我们将gen文件夹下的该包复制到Bproject中。假设我们将RemoteService.aidl文件和我们的其它类存放在一起,那么我们在Bproject中就要建立对应的包,以保证RmoteService.java文件的报名正确,我们不能改动RemoteService.java文件 bindService(newInten("net.blogjava.mobile.aidlservice.RemoteService"),serviceConnection,Context.BIND_AUTO_CREATE); ServiceConnection的onServiceConnected(ComponentNamename,IBinderservice)方法中的service參数就是Aproject中MyService类中继承了RemoteService.stub类的内部类的对象。 Android採用RPC的方式来实现(remoteprocedurecall)远程通信,而且Android通过接口定义语言AIDL来生成两个进程之间互相訪问的代码。比如,你在Activity里的代码须要訪问Service中的一个方法,那么就能够通过这样的方法来实现了。 创建一个AIDL文件(參见代码) 实现AIDL文件生成的Java接口(參见代码) 将你的接口暴露给client client调用 12.请解释下Android程序执行时权限与文件系统权限的差别。 13.系统上安装了多种浏览器,是否能指定某浏览器訪问指定页面? webkit 14.有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片全部的白色不透明(0xffffffff)像素点的透明度调整为50%。 15.你怎样评价Android系统?优缺点。 长处:开源特性,得到众多厂商支持。 软件发展非常快。 界面UI,系统优化不错。 缺点:版本号过多,升级过快。 用户体验不一致。 16.android中的动画有哪几类,他们的特点和差别是什么? 两种, 一种是Tween动画(补间动画), 一种是Frame动画(逐帧动画)。 Tween动画:使试图组件移动,放大,缩小以及产生透明度的变化。 Frame动画:传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。 17.横竖屏切换时activity的生命周期 不设置Activity的android:configChanges时,切屏会又一次调用各个生命周期,切横屏时会运行一次,切竖屏时会运行两次。 设置Activity的android:configChanges="orientation"时,切横,竖屏时生命周期仅仅会运行一次。 进程与线程 当一个程序開始执行时,它就是一个进程,进程包括执行中的程序和程序所使用的内存和系统资源。而一个进程又是由多个线程组成的。引入线程长处是易于调度,提供开发效率,通过线程能够方便有效的实现并发,进程可创建多个线程来执行同一个程序的不同部分,开销小,创建线程比创建进程要快,所需开销非常少。 宏就是把一系列经常使用的操作作为一个总体,保存起来,以后用的时候直接通过一定方式用就是了 先说宏和函数的差别: 1.宏做的是简单的字符串替换(注意是字符串的替换,不是其它类型參数的替换),而函数的參数的传递,參数是有数据类型的,能够是各种各样的类型. 2.宏的參数替换是不经计算而直接处理的,而函数调用是将实參的值传递给形參,既然说是值,自然是计算得来的. 4.宏的參数是不占内存空间的,由于仅仅是做字符串的替换,而函数调用时的參数传递则是详细变量之间的信息传递,形參作为函数的局部变量,显然是占用内存的. 5.函数的调用是须要付出一定的时空开销的,由于系统在调用函数时,要保留现场,然后转入被调用函数去运行,调用完,再返回主调函数,此时再恢复现场,这些操作,显然在宏中是没有的. 定义一个宏替代两个输入数的乘积 怎么写? #include #defineMULTIPLY(x,y)((x)*(y)) intmain() { intx,y,z; scanf("%d%d",&x,&y); z=MULTIPLY(x,y); printf("%d",z); return0; ------------------------------------------------------------------------------------------------------------------------ Android面试题经典 android的官方建议应用程序的开发採用mvc模式。何谓mvc? mvc是model,view,controller的缩写,mvc包括三个部分: l模型(model)对象:是应用程序的主体部分,全部的业务逻辑都应该写在该层。 l视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一能够看到的一层,接收用户的输入,显示处理结果。 android鼓舞弱耦合和组件的重用,在android中mvc的详细体现例如以下: 1)视图层(view):一般採用xml文件进行界面的描写叙述,使用的时候能够很方便的引入,当然,怎样你对android了解的比較的多了话,就一定能够想到在android中也能够使用javascript+html等的方式作为view层,当然这里须要进行java和javascript之间的通信,幸运的是,android提供了它们之间很方便的通信实现。 3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。 和其它手机平台的应用程序一样,Android的应用程序的生命周期是被统一掌控的,也 就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,仅仅能学习并 适应它。 能被干掉。 classMyActivityextendsActivity{ protected voidonCreate(BundlesavedInstanceState); voidonStart(); voidonResume(); voidonPause(); voidonStop(); voidonDestroy(); publicclassMyActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState);protectedvoidonStart();protectedvoidonResume();protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();} onPause:到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情 从上文的描写叙述已经知道,应该在这里保存你的一些数据,由于这个时候 你的程序的优先级减少,有可能被系统收回。在这里保存的数据,应该在 个activity不会等到这种方法完毕才启动 onDestroy:这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方 法或者是系统为了节省空间将它临时性的干掉,能够用isFinishing()来判 断它,假设你有一个ProgressDialog在线程中转动,请在onDestroy里 把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛 异常的。 为了保证程序的正确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库)。实际工作中由于生命周期的变化而带来的问题也非常多,比方你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是暂停还是杀掉还是数据回滚,是吧由于Activity可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般都是採用Android的消息机制[Handler,Message]来处理多线程和界面交互的问题。 讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么非常 简单你仅仅须要设置一下Activity的主题就能够了在AndroidManifest.xml中定义Activity的 地方一句话: android:theme=”@android:style/Theme.Dialog” android:theme=”@android:style/Theme.Translucent” 当你的程序中某一个ActivityA在执行时中,主动或被动地执行还有一个新的ActivityB 这个时候A会运行 B完毕以后又会来找A,这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回 收的A就要又一次调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上參数 savedInstanceState,没被收回的就还是onResume就好了。 上面这段intent-filter的配置文件说明了这个Activity能够接受不同的Action,当然对应的程序逻辑也不一样咯,提一下那个mimeType,他是在ContentProvider里定义的,你要是自己实现一个ContentProvider就知道了,必须指定mimeType才干让数据被别人使用。 13.怎样退出Activity怎样安全退出已调用多个Activity的Application 对于单一Activity的应用来说,退出非常easy,直接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、抛异常强制退出: 该方法通过抛异常,使程序ForceClose。 验证能够,可是,须要解决的问题是,怎样使程序结束掉,而不弹出ForceClose的窗体。 2、记录打开的Activity: 每打开一个Activity,就记录下来。在须要退出时,关闭每个Activity就可以。 3、发送特定广播: 在须要结束应用时,发送一个特定的广播,每一个Activity收到广播后,关闭就可以。 4、递归退出 在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。 除了第一个,都是想办法把每个Activity都结束掉,间接达到目的。 可是这样做相同不完美。 你会发现,假设自己的应用程序对每个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。 但至少,我们的目的达到了,并且没有影响用户使用。 为了编程方便,最好定义一个Activity基类,处理这些共通问题。 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内的元素一层覆盖一层地显示,在帧布局中,先加入的图片会被后加入的图片覆盖。 15.请介绍下Android的数据存储方式。 Android提供了5种方式存储数据: 1、使用SharedPreferences存储数据; 2、文件存储数据; 3、SQLite数据库存储数据; 4、使用ContentProvider存储数据; 5、网络存储数据; Android中的数据存储都是私有的,其它应用程序都是无法訪问的,除非通过ContentResolver获取其它程序共享的数据。 16.请介绍下ContentProvider是怎样实现数据共享的。 一个程序能够通过实现一个Contentprovider的抽象接口将自己的数据全然暴露出去,并且Contentproviders是以类似数据库中表的方式将数据暴露。Contentproviders存储和检索数据,通过它能够让全部的应用程序訪问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Contentprovider或者将你的数据加入到一个已经存在的Contentprovider中,前提是有同样数据类型并且有写入Contentprovider的权限。 怎样通过一套标准及统一的接口获取其它应用程序暴露的数据?Android提供了ContentResolver,外界的程序能够通过ContentResolver接口訪问ContentProvider提供的数据。 17.怎样启用Service,怎样停用Service。 1.第一种是通过调用Context.startService()启动,调用Context.stopService()结束,startService()能够传递參数给Service 2.另外一种方式是通过调用Context.bindService()启动,调用Context.unbindservice()结束,还能够通过ServiceConnection訪问Service。 在Service每一次的开启关闭过程中,仅仅有onStart可被多次调用(通过多次startService调用),其它onCreate,onBind,onUnbind,onDestory在一个生命周期中仅仅能被调用一次。 18.注冊广播有几种方式,这些方式有何优缺点请谈谈Android引入广播机制的用意。 android中,不同进程之间传递信息要用到广播,能够有两种方式来实现。 第一种方式:在Manifest.xml中注冊广播,是一种比較推荐的方法,由于它不须要手动注销广播(假设广播未注销,程序退出时可能会出错)。 详细实如今Manifest的application中加入: 上面两个android:name各自是广播名和广播的动作(这里的动作是表示系统启动完毕),假设要自己发送一个广播,在代码中为: Intenti=newIntent(“android.intent.action.BOOT_COMPLETED”); sendBroadcast(i); 这样,广播就发出去了,然后是接收。 接收能够新建一个类,继承至BroadcastReceiver,也能够建一个BroadcastReceiver的实例,然后得写onReceive方法,实现例如以下: protectedBroadcastReceivermEvtReceiver=newBroadcastReceiver(){ @Override publicvoidonReceive(Contextcontext,Intentintent){ Stringaction=intent.getAction(); if(action.equals(“android.intent.action.BOOT_COMPLETED”)){ //Dosomething }; 另外一种方式,直接在代码中实现,但须要手动注冊注销,实现例如以下: IntentFilterfilter=newIntentFilter(); filter.addAction(“android.intent.action.BOOT_COMPLETED”); registerReceiver(mEvtReceiver,filter);//这时注冊了一个recevier,名为mEvtReceiver,然后相同用上面的方法以重写onReceiver, 最后在程序的onDestroy中要注销广播,实现例如以下: publicvoidonDestroy(){ super.onDestroy(); unregisterReceiver(mPlayerEvtReceiver); Android系统中的广播是广泛用于应用程序之间通信的一种手段,它类似于事件处理机制,不同的地方就是广播的处理是系统级别的事件处理过程(一般事件处理是控件级别的)。在此过程中仍然是离不开Intent对象,理解广播事件的处理过程,灵活运用广播处理机制,在关键之处往往能实现特别的效果, 在Android中假设要发送一个广播必须使用sendBroadCast向系统发送对其感兴趣的广播接收器中。 使用广播必需要有一个intent对象必设置其action动作对象 使用广播必须在配置文件里显式的指明该广播对象 每次接收广播都会又一次生成一个接收广播的对象 在BroadCast中尽量不要处理太多逻辑问题,建议复杂的逻辑交给Activity或者Service去处理 19.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系。 简单的说,Handler获取当前线程中的looper对象,looper用来从存放Message的MessageQueue中取出Message,再有Handler进行Message的分发和处理 20.AIDL的全称是什么怎样工作能处理哪些类型的数据 详细实现过程例如以下: 1、创建AIDL文件,在这个文件中面定义接口,该接口定义了可供client訪问的方法和属性。 2、编译AIDL文件,用Ant的话,可能须要手动,使用Eclipseplugin的话,能够依据adil文件自己主动生产java文件并编译,不须要人为介入. 3、在Java文件里,实现AIDL中定义的接口.编译器会依据AIDL接口,产生一个JAVA接口。这个接口有一个名为Stub的内部抽象类,它继承扩展了接口并实现了远程调用须要的几个方法。接下来就须要自己去实现自己定义的几个接口了. 4、向client提供接口ITaskBinder,假设写的是service,扩展该Service并重载onBind()方法来返回一个实现上述接口的类的实例。 5、在server端回调client的函数.前提是当client获取的IBinder接口的时候,要去注冊回调函数,仅仅有这样,server端才知道该调用那些函数 3.List,Map和Parcelables类型,这些类型内所包括的数据成员也仅仅能是简单数据类型,String等其它比支持的类型. (另外:我没尝试Parcelables,在Eclipse+ADT下编译只是,也许以后会有所支持). 实现接口时有几个原则: .抛出的异常不要返回给调用者.跨进程抛异常处理是不可取的. IPC的调用步骤: 2.实现ServiceConnection。 3.调用ApplicationContext.bindService(),并在ServiceConnection实现中进行传递. 4.在ServiceConnection.onServiceConnected()实现中,你会接收一个IBinder实例(被调用的Service).调用 YourInterfaceName.Stub.asInterface((IBinder)service)将參数转换为YourInterface类型。 5.调用接口中定义的方法。你总要检測到DeadObjectException异常,该异常在连接断开时被抛出。它仅仅会被远程方法抛出。 6.断开连接,调用接口实例中的ApplicationContext.unbindService() 21.请解释下Android程序执行时权限与文件系统权限的差别。 apk程序是执行在虚拟机上的,相应的是Android独特的权限机制,仅仅有体现到文件系统上时才使用linux的权限设置。 android系统有的权限是基于签名的。 22.系统上安装了多种浏览器,是否能指定某浏览器訪问指定页面请说明原由。 通过直接发送Uri把參数带过去,或者通过manifest里的intentfilter里的data属性 23.有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片全部的白色不透明(0xffffffff)像素点的透明度调整为50%。 24、什么是ANR怎样避免它 答:ANR:ApplicationNotResponding,五秒在Android中,活动管理器和窗体管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了: 因此,不论什么执行在主线程中的方法,都要尽可能的仅仅做少量的工作。特别是活动生命周期中的重要方法如onCreate()和onResume()等更应如此。潜在的比較耗时的操作,如訪问网络和数据库;或者是开销非常大的计算,比方改变位图的大小,须要在一个单独的子线程中完毕(或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程须要进入堵塞状态已等待子线程结束—也不须要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程在即将结束的时候调用它(xing:可以參看Snake的样例,这样的方法与曾经我们所接触的有所不同)。使用这样的方法涉及你的应用程序,可以保证你的程序对输入保持良好的响应,从而避免由于输入事件超过5秒钟不被处理而产生的ANR。这样的实践须要应用到全部显示用户界面的线程,由于他们都面临着相同的超时问题。 25、什么情况会导致ForceClose怎样避免是否能捕获导致其的异常 27、简要解释一下activity、intent、intentfilter、service、Broadcase、BroadcaseReceiver 28、IntentService有何长处 29、横竖屏切换时候activity的生命周期 2、设置Activity的android:configChanges=”orientation”时,切屏还是会又一次调用各个生命周期,切横、竖屏时仅仅会运行一次 3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会又一次调用各个生命周期,仅仅会运行onConfigurationChanged方法 30.怎样将SQLite数据库(dictionary.db文件)与apk文件一起公布 31.怎样将打开resaw文件夹中的数据库文件 32.Android引入广播机制的用意 33、android的优势与不足 Android平台手机5大优势: 一、开放性 在优势方面,Android平台首先就是其开发性,开发的平台同意不论什么移动终端厂商增加到Android联盟中来。显著的开放性能够使其拥有很多其它的开发人员,随着用户和应用的日益丰富,一个崭新的平台也将非常快走向成熟 开发性对于Android的发展而言,有利于积累人气,这里的人气包含消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将能够用更低的价位购得心仪的手机。 二、挣脱运营商的束缚 互联网巨头Google推动的Android终端天生就有网络特色,将让用户离互联网更近。 三、丰富的硬件选择 四、不受不论什么限制的开发商 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手机 四、同类机型用户降低 五、过分依赖开发商缺少标准配置 在使用PC端的WindowsXp系统的时候,都会内置微软WindowsMediaPlayer这样一个浏览器程序,用户能够选择很多其它样的播放器,如Realplay或暴风影音等。但入手開始使用默认的程序相同能够应付多样的须要。在Android平台中,因为其开放性,软件很多其它依赖第三方厂商,比方Android系统的SDK中就没有内置音乐播放器,所有依赖第三方开发,缺少了产品的统一性。 34、android中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和差别。 XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要採用SAX方式,SAX读取是单向的,长处:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是非常方便。而DOM方式会把整个XML文件载入到内存中去,这里Android开发网提醒大家该方法在查找方面能够和XPath非常好的结合假设数据量不是非常大推荐使用,而PULL经常常使用在J2ME对于节点处理比較好,类似SAX方式,相同非常节省内存,在J2ME中我们经常使用的KXML库来解析。 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的设计和执行机制,也就更可以驾驭整个应用层的开发。 ---------------------------------------------------------------------------------------------------------------- 一些常见的Android面试基础题做下总结,看看你能做出多少道 1.Intent的几种有关Activity启动的方式有哪些,你了解每一个含义吗 -------------------------------------------------------------------------------- 这里Android123提示大家,Intent的一些标记有FLAG_ACTIVITY_BROUGHT_TO_FRONT、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK等。每种含义大家看SDK文档和详细跑下这样你的记忆会更深刻些。 2.Activity和Task的启动模式有哪些每种含义是什么 3.通过Intent传递一些二进制数据的方法有哪些 1).使用Serializable接口实现序列化,这是Java经常使用的方法。 2).实现Parcelable接口,这里Android的部分类比方Bitmap类就已经实现了,同一时候Parcelable在AndroidAIDL中交换数据也非经常见的。 4.能说下Android应用的入口点吗 真正的Android入口点是application的main,你能够看下androidmanifest.xml的包括关系就清楚了。能够没有Activity可是必须有Application 5.Android都有哪些XML解析器,都熟练掌握吗 这里XmlPull、SAX和DOM相信做过Web开发的都已经滚瓜烂熟了。 6.SQLite支持事务吗加入删除怎样提高性能 SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能能够考虑通过原始经过优化的SQL查询语句方式处理。 7.AndroidService和Binder、AIDL你都熟练吗 作为Android重要的后台服务,这些每一个Android开发人员都应该掌握,这也算是和JavaSE最大的不同了,详细的实例大家能够查看Android音乐播放器的源码Music.git中的,这里不再赘述。 8.你用过哪款Android手机,有哪些长处和不足,相对于iPhone或Symbian又有哪些优缺点 把这个作为面试题也是考察下,能够大概了解到它对Android的了解程度,多移动开发的认识。 【2011-5-12补充】 1.请描写叙述下Activity的生命周期。 创建oncreate-启动onstart–恢复onResume–暂停onPause–结束onEnd–销毁onDestroy 2.假设后台的Activity因为某原因被系统回收了,怎样在被系统回收之前保存当前状态? 在”暂停onPause”状态将数据保存。 3.怎样将一个Activity设置成窗体的样式。 设置Theme。 5.请介绍下Android中经常使用的五种布局。 线性布局LinearLayout,相对布局RelativeLayout 表单布局TableLayout, 绝对布局AbsLayout(已淘汰) 帧布局FrameLayout 6.请介绍下Android的数据存储方式。 Preference,文件,数据库SQlite,网络存储 7.请介绍下ContentProvider是怎样实现数据共享的。 8.怎样启用Service,怎样停用Service。 启动: Context.startService() and Context.bindService(). 关闭:Context.stopService(). Service.stopSelf() or Service.stopSelfResult() 9.注冊广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。 10.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系。 11.AIDL的全称是什么?怎样工作?能处理哪些类型的数据? 12.请解释下Android程序执行时权限与文件系统权限的差别。(EditedbySodino) 13.系统上安装了多种浏览器,是否能指定某浏览器訪问指定页面?请说明原由。 14.有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片全部的白色不透明(0xffffffff)像素点的透明度调整为50%。 15.你怎样评价Android系统?优缺点。(这一题反复了) 优势: 一、开放性三、丰富的硬件选择五、无缝结合的Google应用支持 缺点:一、安全和隐私 二,开发商自己定义,不够统一四、同类机型用户降低 1、什么是ANR怎样避免它? 2、什么情况会导致ForceClose?怎样避免?是否能捕获导致其的异常? 会有执行时异常,执行时异常无需捕捉 4、简要解释一下activity、intent、intentfilter、service、Broadcast、BroadcaseReceiver 这个问题问的非常普遍,自己多看看吧。在此不多说了! 5、IntentService有何长处 1.android:paddingLeft与android:layout_marginLeft的差别 当button分别设置以上两个属性时,得到的效果是不一样的。 android:paddingLeft="30px" button上设置的内容(比如图片)离button左边边界30个像素 android:layout_marginLeft="30px" 整个button离左边设置的内容30个像素 2.Android动画有哪几种?描写叙述一下 两种。Tween动画和Frame动画。Tween动画主要是透明度、尺寸伸缩、旋转、位移等效果。 Frame动画能够理解成gif,一帧一帧的显示图片。比較经常使用的有滚动栏效果。 3.对Intent、Activity、广播、Service等的理解。 4.哪些情况下会发生ANR怎么相应?(这个问题也反复了) ApplicationNotResponse。 5.隐式、显式Intent的差别 ·显式意图 通过名字指明目标组件(这个组件名字字段componentnamefield, 前面提到过, 有一个数值集)。既然组件名称通常不为其它应用程序的开发人员所了解,显式意图典型的被用作应用程序的内部消息-比如一个活动启动一个附属服务或姊妹活动。 隐式意图 不命名目标组件(组件名称字段为空)。隐式意图经经常使用来激活其它应用程序的组件。 这一块參考Intent说明,能够同一时候看一下Notepad的样例,帮助理解,个人感觉非常重要! (上面几个问题感觉都不错,各位自己查漏补缺吧!有些还没有写答案的,各位有空能够回答一下~我会将你的答案填充上去) ------------------------------------------------------------------- 2011-07-05补充 返回键与Home键差别? back键默认行为是finish处于前台的Activity的即Activity的状态为Destroy状态为止,再次启动该Activity是从onCreate開始的(不会调用onSaveInstanceState方法)。Home键默认是stop前台的Activity即状态为onStop为止而不是Destroy,若再次启动它,会调用onSaveInstanceState方法,保持上次Activity的状态则是从OnRestart開始的---->onStart()--->onResume()。 A、2007年11月5日B、2010年5月20日晚10点30分C、2009年11月10日 正确答案:A 2、Android基于什么平台的开源智能手机操作系统名称 A、WinCEB、LinuxC、SHP 正确答案:B 3、Linux平台由下面下哪些组成? A、操作系统B、中间件C、用户界面D、应用软件 正确答案:ABCD 4、Android操作系统基本的特点是:() A、与Google无缝结合B、实现个性化应用 C、良好的平台开放性D、软件均要收费 正确答案:ABC 5、Android操作系统向开发者提供是 A、所有免费B、部分收费C、仅仅有10%左右是收费的 6、Android个性化界面设置的加入方式 A、点选屏幕下方加入键进行加入B、长按屏幕空白处进行加入C、直接拖拽至屏幕进行加入 7、个性化界面设置不同内容包含: A、快捷方式B、小插件C、窗体小部件D、目录 8、Android操作系统採用全新解锁方式描写叙述正确的是:() A、自己定义图型解锁;B、滑动解锁;C、规定图型解锁;D、仅仅可側键解锁; 正确答案:AB 9、Android支持谷歌全方位移动服务,丰富最新网络体验包含: A、电子市场;B、GoogleTalk;C、Google搜索; 正确答案:ABCDE 10、截止2010年12月,中国上市的Andriod操作系统已经公布了下面哪几个版本号 A、1.0B、1.3C、1.5D、1.6E、2.0F、2.1G、2.2 正确答案:ACDEFG 11、在中国,下面哪些属于Android软件主要下载门户?() A、安卓网B、机锋网C、百度D、GoogleE、优亿市场 正确答案:ABE 12、Android安装软件后缀是:() A..sisB.cabC..apkD..jar 正确答案:C 13、下面哪些不是Android操作系统的版本号:() A、1.0B、1.3C、2.0D、2.1E、2.2 14、Android操作平台的开放性也针对了众多手机品版的厂家进行了全然的开放,下面有哪几个品牌的手机从未使用过Android操作系统:() A.HTCB.IphoneC.samsungD.诺基亚E.黑莓 正确答案:BDE 15、Android1.5操作系统叫() A.纸杯蛋糕B.甜甜圈C.法式奶油夹心甜点D.果馅饼E.冻酸奶 16、Android1.6操作系统叫() 17、Android2.0操作系统叫() 18、Android2.1操作系统叫() 正确答案:D 19、Android2.2操作系统叫() 正确答案:E 20、Android2.2操作系统与Android2.1操作系统对照有哪些方面的提升() A.总体性能大幅度的提升B.3G网络共享功能C.全面的Flash支持 D.App2sd功能(安装程序到SD卡)E.全新的软件商店 F.更好的网络体验 正确答案:ABCDEF 21、Android系统能够同一时候执行多个程序吗?() A.能够;B.不能够 22、下面对Android操作系统描写叙述正确的是:() A.系统资源占用少,系统执行速度快 B.全然开放性的操作系统,对全部软件开发商、手机厂商、运营商平等享有 C.有众多的软件提供给消费者下载 D.个性化的操作界面,操作简单 23、Android操作系统的手机能够有下面几个方法进行软件安装() A.通过手机直接登陆百度站点下载安装; B.通过手机直接登陆Android门户站点进行下载安装; C.通过数据线与电脑连接直接下载安装; D.通过PC终端上网下载至SD卡里再插入手机进行安装; 24、Android操作系统具有个性化操作界面设置,下面关于进行加入描写叙述正确的是() A.点选屏幕下方加入键进行加入B.长按屏幕空白处进行加入 C.直接拖拽至屏幕进行加入D.不可直接拖拽至屏幕进行加入 26、Android从哪个版本号開始支持动态壁纸() A.1.0B.1.3C.2.0D.2.1E.2.2 27、Android从哪个版本号開始支持3D动态相冊() 28、Android从哪个版本号開始系统自带支持mobileAP热点() 29、Android从哪个版本号開始支持Flash10.1() 30、Android从哪个版本号開始系统自带支持AllShare协议() 31、Android从哪个版本号開始能够提供多个不同账户统一收件箱 32、Android从哪个版本号開始浏览器支持双击缩放 33、Android从哪个版本号開始强化了语音识别的搜索功能 34、Android从哪个版本号開始增加微软Exchange服务支持 35、Android从哪个版本号開始支持双击上传图片至YouTube 36、Android从哪个版本号開始支持谷歌地图服务更新 37、Android从哪个版本号開始支持全部文本输入区应用语音识别 38、Android从哪个版本号開始支持3D相片集 39、Android从哪个版本号開始支持修复FM收音机 40、下面哪些是Android的优势() A、开源的操作系统,代码全然开放,开放成本最低 B、便捷的用户体验界面,操作简单 C、平台技术先进,更好的支持互联网业务 D、系统资源占用少,系统速度快 41、Android从哪个版本号開始软件可安装到存储卡上 42、Android从哪个版本号開始自己主动更新设备上已经安装的应用程序 43、Android能实现手机的主屏幕的自己定义,并将经常使用的各种应用以图标的形式加入至主屏幕界面 A、对 B、错 44、Android能实现手机的主屏幕的自己定义,可是加入的图标要依照功能属性排列 45、Android操作系统的主屏界面图标设置一次后,就不能更改 46、、Android操作系统能够将哪些类型不同内容,任意加入至主屏幕