Android面试题收集(有具体答案)zfyouxi

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操作系统能够将哪些类型不同内容,任意加入至主屏幕

THE END
1.我为您重新生成了一个标题,揭秘2024年全网最低价业务平台,消费全网最低价业务平台揭秘 2024最划算业务平台详解 1、引言 - 背景介绍 - 目的与意义 2、平台概述 - 平台定义与功能 - 主要用户群体 - 市场定位与优势 3、核心特点 - 实时价格更新机制 - 多平台比价系统 - 用户评价与反馈系统 4、使用指南 - 注册与登录流程 - 搜索与筛选商品 - 下单与支付流程 5、成功案例http://m.bco.tuokeb2b.com/post/56451.html
2.独立站电商系统:一站式解决方案,破解贸易难题社交电商集成:无缝链接社交媒体平台,扩大品牌曝光。 营销工具箱 搜索引擎优化:内置SEO工具,提升网站搜索排名。 邮件营销:自动化邮件发送,维护客户关系,刺激复购。 支付与物流 多元支付选项:集成多种支付网关,便捷交易。 物流追踪:全程可视化物流管理,提升购物体验。 https://www.linkseeks.com/article-3276.html
3.变速箱也有横纵之分你知道吗?横置纵置都有啥好处?首先纵置双离合的体积比横置双离合更大,但因为是纵向布置,所以它所占用的空间,与横置平台下并没有太多的可比性,但是体积更大了,可布置的散热渠道也更大,其次是DL382还有独立的冷却回路,因为变速箱散热不仅仅是离合器片散热和齿轮散热,对于内部的电子元件也起到散热作用,所以纵置变速箱的内部散热效率也更高。 https://www.dongchedi.com/article/7035949054232396324
4.Java面试题详解超全200题PDM 更好的保证了 Java 平台的安全性,在该机制中, JVM 自带的 Bootstrap 是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。 JVM 不会向 Java 程序提供对 Bootstrap 的引用。下面是关于几个类加载器的说明: https://blog.csdn.net/LearnMore666/article/details/105488723
5.头条文章以小米SU7 Max为例,全系都采用全球顶级品牌的轮胎,即使配备21"倍耐力P ZERO 5代运动胎,也能实现 725km CLTC续航,并且媒体实测中实现了接近500km的高速续航和超过550km的城市高速综合续航,表现极其优异。 ? ?15 ?电压平台接近,小米SU7标准版为什么能比特斯拉Model 3的充电要快不少? https://card.weibo.com/article/m/show/id/2309405031537782685731
6.打招呼美团饿了么外卖某小说平台名下的 980+ 个公众号 累计近20000 个公众号 他们都在用 《精准打招呼》 粉丝变现 每天超过2000万的粉丝看到打招呼的推送 你还在等什么? 售前QQ群有来自已购买客户分享的 【如何使用精准打招呼轻松月入10w+的套路解析】 感兴趣的同学一定要进群索要~ http://www.zhiwu55.com/html/w7/addons/0d7363894acdee742caf7fe4e97c4d49.html
7.双非本科跨专业5面京东,8600小时后收到通知,流下喜悦泪水8、没有系统的学习,学了Java基础,就靠刷面经、刷左神视频、B站视频等,太难了,虽然最后拿了不少offer,但是都是白菜价,太难了!!!大家一定要好好准备 关于算法部分,其实要准备的细节内容非常多,所以我也花了不少心思整理了一份关于算法方面的宝典,这份资料我对算法的认识以及我的学习方法,除了Leetcode以外,大厂喜https://maimai.cn/article/detail?fid=1632778078&efid=DWfu7WeSgiHv2qWOUabF1g
8.吐血整理!今年两会上,佛教界代表委员都说了啥?这要求我们自觉以社会主义核心价值观为引领,立足新时代,坚守佛教信仰,远离商业化,在促进社会团结和谐、服务经济社会发展方面发挥积极作用。他建议,通过政协平台大力宣传宗教中国化的内涵,宣传宗教界人士和信教群众促进社会稳定和谐发展的典型事例。 全国人大代表静波法师:八条建议提升宗教干部素质https://fo.ifeng.com/c/7l3mp3DUjbM
9.综合评价招生是什么意思?什么样的学生适合走综评?答:综合评价认可度较高的文科赛事有叶圣陶杯、语文报杯、全国中学生创新作文、”外研社杯“外语素养大赛等,主要为白名单赛事。 20、有学科竞赛省级二等奖可以参加综合评价吗? 答:考生只要综合成绩好都可以尝试的。考生具备学科竞赛省级二等奖在高校综合评价初审和校测时有很大的积极作用。 https://m.gk100.com/read_275849920.htm
10.很多人都在做电商,但LOGO对电商的重要性,你知道多少?香奈儿、阿玛尼、LV等等等这些是品牌里的大牌,only、zara、H&M等等这些是品牌里的大众品牌,天猫、京东这些是电商平台里的大品牌,三只松树、韩都衣舍等等这些是名副其实的电商品牌,他们都有自己的logo设计规范和品牌定位,而到底什么是品牌呢?我想微信公众平台首页的那句slogan最能告诉我们答案——再小的个体,也有自己https://logo.xwzn.cn/zixun/866.html
11.淘宝刷单都有哪些软件?各有什么优势?流量助手刷单平台很多商家都使用过,这是个老平台了,8年多,口碑也不错。简单来说,该平台的主要功能就是通过提升店铺的关键词排名和综合排名,来吸引更多的消费者下单,促进自然订单的成交。 有提升店铺宝贝排名人气需求的,这里推荐补排名:http://liuliang.zhushou005.xyz/login.html(仅限商家)专业流量提升平台,多年https://www.maijia.com/article/478747
12.西安市优质教育资源共享平台早睡早起,适当接受阳光照射(避开太阳直射,注意防暑),以顺应阳气的充盛,利于气血的运行,振奋精神。夏日昼长夜短,中午小憩可助恢复疲劳,有利于健康。 2.祛湿护心,注意饮食 平时吃饭的食材中,有祛湿作用的红豆、薏米、冬瓜、豆类、鲤鱼等都是非常好的食材,切记不宜过食生冷、油腻的食物,以免助湿伤脾。 http://www.xaeduyun.cn/s4buq/acommonapp/csite/ablog/cblog/ablog/cblog.mblogBrowse.do?blogid=2c90815f7623815901764b84ce87087b
13.每日热点0403此次会议是在国家卫生健康委科教司、国家科技基础条件平台中心等主管部门支持下,由国家病原微生物保藏中心组织召开的一次专题研讨会。会议有利于促进我国相关部门和专家关注病原微生物资源共享机制的法律政策研究,加强领域专家团队建设,跟踪并积极参与国际交流合作,提升我国病原微生物资源共享法律政策研究水平,为推动共享长效https://sccdc.cn/Article/View?id=27366
14.为什么都有API网关?聊聊API网关的作用51CTO博客为什么都有API网关?聊聊API网关的作用 一、API网关的用处 API网关一般会用到以下三种场景上。 Open API 企业需要将自身数据、能力等作为开发平台向外开放,通常会以rest的方式向外提供,最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。https://blog.51cto.com/u_13538361/6383734
15.细辛的药理作用都有什么药学药理学小木虫论坛请问细辛的药理作用有需要补充的吗?我目前查到的就这些 1、解热 细辛挥发油,解热作用部位可能是在https://muchong.com/t-14514946-1
16.酵妈妈酵素桶使用说明大全新酵友一定要看哦酵素的敌人是茶叶、咖啡、饮料、绿茶、白萝卜、热开水,酵素一但遇到这些就会被分解掉,不会起到任何作用,但是也不会有别的影响,只是没有效果,吃对方法,效果好!实在要吃,和以上食物间隔开两个小时以上! 第五,哪些水果不能一起做酵素? 酵友们,下面水果放在一起会相克: https://www.meipian.cn/22w04gbt
17.这是拍了来抹黑我们真“维和防暴队”的吧,拍的什么狗屎(维和防暴这篇影评可能有剧透 就王一博这演技,演啥都一样的演技怎么好意思说王阳偷了他的“白玉兰视帝”他的经纪人是不是偷偷研究了易烊千玺的戏路知道颜值不够就避开能够快速飞升的偶像剧赛道,但是实力也不够啊今天小乔要看的就是《维和防暴队》,幸好前段时间忙没去电影院看要不然真的气死了,拍的什么垃圾李达超导演吴孟璋https://movie.douban.com/review/16000248/