Android经典面试题


1.下列哪些语句关于内存回收的验证是科学的? (b )A、
程序员必须创建一个线程来刑释解教内存

B、内存回收程序负担释放无用内存

C、内存回收程序同意程序员直接出狱内存

D、内存回收程序可以在指定的时刻释放内存对象

2.底下极度是属于Runtime Exception
的是(abcd)(多选)
A、ArithmeticException

B、IllegalArgumentException

C、NullPointerException

D、BufferUnderflowException

3.Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). cA、11
,-11B、11 ,-12C、12 ,-11D、12 ,-124.下列程序段的出口结果是:(b )

void complicatedexpression_r(){

int x=20, y=30;

boolean b;

b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;

System.out.println(b);

}

A、trueB、falseC、1D、011.activity5.对有些资源以及气象的操作保存,最好是保存在生命周期的哪些函数中举行(d)A、onPause()B、onCreate()C、
onResume()D、onStart()

6.Intent传递数据时,下列的数据类型哪些能够被传送(abcd)(多选)A、SerializableB、charsequenceC、ParcelableD、Bundle

7.android中下列属于Intent的功能的是(c)A、完成应用程序间的多少共享

B、是一段长的生命周期,没有用户界面的顺序,可以保持利用在后台运行,而不会因为切换页面而消亡

C、可以兑现界面间的切换,可以涵盖动作和动作数据,连接四大组件的主题

D、处理一个应用程序全体性的干活

8.下列属于SAX解析xml文件的长处的是(b)A、将全部文档树在内存中,便于操作,帮助删除,修改,重新排列等三种意义

B、不用事先调入整个文档,占用资源少

C、整个文档调入内存,浪费时间和空间

D、不是长远驻留在内存,数据不是持之以恒的,事件过后,若没有保留数据,数据就会

消失

9.下边的对自定style的方法不错的是(a)A、

fill_parent

B、

fill_parent

C、

fill_parent

D、

fill_parent

10.在android中行使Menu时或许需求重写的主意有(ac)。(多选)A、onCreateOptionsMenu()

B、onCreateMenu()

C、onOptionsItemSelected()

D、onItemSelected()

11.在SQL Server Management Studio
中运行下列T-SQL语句,其输出值(c)。
SELECT @@IDENTITY

A、可能为0.1

B、可能为3

C、不能为-100

D、肯定为0

12.在SQL Server
2005中运作如下T-SQL语句,假定SALES表中有多行数据,执行查询之后的结果是(d)。
BEGIN
TRANSACTION A

Update SALES Set qty=30 WHERE qty<30

BEGIN TRANSACTION B

Update SALES Set qty=40 WHEREqty<40

Update SALES Set qty=50 WHEREqty<50

Update SALES Set qty=60 WHEREqty<60

COMMIT TRANSACTION B

COMMIT TRANSACTION A

A、SALES表中qty列最小值超出等于30

B、SALES表中qty列最小值超越等于40

C、SALES表中qty列的数据总体为50

D、SALES表中qty列最小值超出等于60

13.在android中接纳SQLiteOpenHelper那个襄助类时,可以生成一个数据库,并得以对数据库版本进行管理的法门可以是(ab)A、getWriteableDatabase()

B、getReadableDatabase()

C、getDatabase()

D、getAbleDatabase()

14.android
有关service生命周期的onCreate()和onStart()说法科学的是(ad)(多选题)
A、当第一回开行的时候先后调用onCreate()和onStart()方法

B、当第五遍开行的时候只会调用onCreate()方法

C、若是service已经启动,将先后调用onCreate()和onStart()方法

D、如若service已经起步,只会执行onStart()方法,不在执行onCreate()方法

15.底下是属于GLSurFaceView特性的是(abc)(多选)A、管理一个平板电脑,这几个华为平板就是一块卓绝的内存,能平昔排版到android的视图

view上。

B、管理一个EGL display,它能让opengl把内容渲染到上述的三星平板上。

C、让渲染器在独立的线程里运行,和UI线程分离。

D、可以一向从内存依然DMA等硬件接口取得图像数据

16.上面在AndroidManifest.xml文件中登记BroadcastReceiver格局正确的(a)A、

android:name=”android.provider.action.NewBroad”/>

B、

android:name=”android.provider.action.NewBroad”/>

C、

android:name=”android.provider.action.NewBroad”/>

D、

android:name=”android.provider.action.NewBroad”/>

17.关于ContenValues类说法科学的是(a)A、他和Hashtable比较接近,也是肩负储存一些名值对,可是他存储的名值对中间的

名是String类型,而值都是主导类型

B、他和Hashtable比较接近,也是背负储存一些名值对,可是她存储的名值对中等的

名是任意档次,而值都是骨干项目

C、他和Hashtable相比相近,也是承担储存一些名值对,不过他存储的名值对中级的

名,可以为空,而值都是String类型

D、他和Hashtable相比接近,也是承受储存一些名值对,可是她存储的名值对中间

766游戏网官网,的名是String类型,而值也是String类型

18.我们都通晓Hanlder是线程与Activity通讯的桥梁,借使线程处理不当,你的机械就会变得越慢,那么线程销毁的法子是(a)A、onDestroy()

B、onClear()

C、onFinish()

D、onStop()

19.底下退出Activity错误的主意是(c)A、finish()

B、抛十分强制退出

C、System.exit()

D、onStop()

20.底下属于android的动画分类的有(ab)(多项)A、TweenB、Frame C、Draw
D、Animation

21.底下关于Android
dvm的历程和Linux的历程,应用程序的长河说法科学的是(d)
A、DVM指dalivk的虚构机.每一个Android应用程序都在它自己的进程中运行,不自然有所一个单独的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个经过,所以说可以认为是同一个概念.

B、DVM指dalivk的杜撰机.每一个Android应用程序都在它和谐的历程中运行,不自然有着一个独门的Dalvik虚拟机实例.而每一个DVM不肯定都是在Linux中的一个历程,所以说不是一个概念.

C、DVM指dalivk的虚拟机.每一个Android应用程序都在它和谐的进程中运行,都装有一个独立的Dalvik虚拟机实例.而每一个DVM不自然都是在Linux中的一个经过,所以说不是一个概念.

D、DVM指dalivk的虚构机.每一个Android应用程序都在它和谐的长河中运行,都负有一个独自的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个经过,所以说可以认为是同一个概念.

22.Android项目工程上面的assets目录的作用是哪些bA、放置应用到的图样资源。

B、主要放置多媒体等数据文件

C、放置字符串,颜色,数组等常量数据

D、放置一些与UI相应的布局文件,都是xml文件

23.有关res/raw目录说法科学的是(a)A、那里的文件是稳如黄山的积存到装备上不会变换为二进制的格式

B、那里的文书是稳如武当山的蕴藏到设备上会转换为二进制的格式

C、那里的文书最后以二进制的格式存储到指定的包中

D、那里的文件最后不会以二进制的格式存储到指定的包中

24.下列对AndroidNDK的了解科学的是(abcd
)
A、 NDK是一名目繁多工具的汇聚

B、 NDK 提供了一份稳定、成效有限的 API 头文件宣称。

C、 使 “Java+C” 的开发方式终于转正,成为法定协助的开发形式

D、 NDK 将是 Android 平台帮忙 C 开发的先导

二.填空题

25.android中常用的八个布局是framlayout,linenarlayout,relativelayout和tablelayout。26.android
的四大组件是activiey,service,broadcast和contentprovide。27.java.io包中的objectinputstream和objectoutputstream类首要用以对目的(Object)的读写。28.android
中service的贯彻方式是:startservice和bindservice。29.activity一般会重载7个法子用来维护其生命周期,除了onCreate(),onStart(),onDestory()外还有onrestart,onresume,onpause,onstop。30.android的多寡存储的方法sharedpreference,文件,SQlite,contentprovider,互连网。31.当启动一个Activity并且新的Activity执行完后需求回到到起步它的Activity来实施的回调函数是startActivityResult()。32.请使用命令行的主意创立一个名字为myAvd,sdk版本为2.2,sd卡是在d盘的根目录下,名字为scard.img,并指定显示屏尺寸HVGA.____________________________________。33.程序运行的结果是:_____good
and gbc__________。public classExample{

String str=new String(“good”);

char[]ch={‘a’,’b’,’c’};

public static void main(String args[]){

Example ex=new Example();

ex.change(ex.str,ex.ch);

System.out.print(ex.str+” and “);

Sytem.out.print(ex.ch);

}

public void change(String str,char ch[]){

str=”test ok”;

ch[0]=’g’;

}

}

34.在android中,请简述jni的调用进度。(8分)1)安装和下载Cygwin,下载
Android NDK

2)在ndk项目中JNI接口的布置

3)使用C/C++完结地点方法

4)JNI生成动态链接库.so文件

5)将动态链接库复制到java工程,在java工程中调用,运行java工程即可

35.简述Android应用程序结构是怎么着?(7分)Android应用程序结构是:

Linux
Kernel(Linux内核)、Libraries(系统运行库或者是c/c++要旨库)、Application

Framework(开发框架包)、Applications(主旨应用程序)

36.请继承SQLiteOpenHelper实现:(10分)1).创制一个本子为1的“diaryOpenHelper.db”的数据库,

2).同时创立一个 “diary” 表(包括一个_id主键并自拉长,topic字符型100

长度, content字符型1000长度)

3).在数据库版本变化时请删除diary表,一视同仁新制造出diary表。

publicclass DBHelperextends SQLiteOpenHelper{

public final static String DATABASENAME =”diaryOpenHelper.db”;

public final static int DATABASEVERSION =1;

//创造数据库

public DBHelper(Context context,Stringname,CursorFactory factory,int
version)

{

super(context, name, factory,version);

}

//创制表等机构性文件

public void onCreate(SQLiteDatabase db)

{

String sql =”create tablediary”+

“(“+

“_idinteger primary key autoincrement,”+

“topicvarchar(100),”+

“contentvarchar(1000)”+

“)”;

db.execSQL(sql);

}

//若数据库版本有更新,则调用此方法

public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)

{

String sql = “drop table ifexists diary”;

db.execSQL(sql);

this.onCreate(db);

}

}

37.页面上存活ProgressBar控件progressBar,请用书写线程以10秒的的时刻成功其速度显示工作。(10分)答案

publicclass ProgressBarStu extends Activity {

private ProgressBar progressBar = null;

protected void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.progressbar);

//从那到下是重中之重

progressBar = (ProgressBar)findViewById(R.id.progressBar);

Thread thread = new Thread(newRunnable() {

@Override

public void run() {

int progressBarMax =progressBar.getMax();

try {

while(progressBarMax!=progressBar.getProgress())

{

intstepProgress = progressBarMax/10;

intcurrentprogress = progressBar.getProgress();

progressBar.setProgress(currentprogress+stepProgress);

Thread.sleep(1000);

}

} catch(InterruptedException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

}

}

});

thread.start();

//关键截止

}

}

38.请描述下Activity的生命周期。必调用的多少个艺术:onCreate() –>
onStart() –> onResume(),用AAA表示

(1)父Activity启动子Activity,子Actvity退出,父Activity调用顺序如下

AAA –> onFreeze() –> onPause() –> onStop() –>
onRestart()–> onStart(),onResume() …

(2)用户点击Home,Actvity调用顺序如下

AAA –> onFreeze() –> onPause() –> onStop() — Maybe
–>onDestroy() – Maybe

(3)调用finish(), Activity调用顺序如下

AAA –> onPause() –> onStop() –> onDestroy()

(4)在Activity上出示dialog,Activity调用顺序如下

AAA

(5)在父Activity上显得透明的或非全屏的activity,Activity调用顺序如下

AAA –> onFreeze() –> onPause()

(6)设备进入睡眠意况,Activity调用顺序如下

AAA –> onFreeze() –> onPause()

39.即使后台的Activity由于某原因被系统回收了,怎样在被系统回收以前封存当前事态?onSaveInstanceState()

当您的程序中某一个Activity A在运作时,主动或被动地运转另一个新的Activity
B,这个时候A会执行onSaveInstanceState()。B完毕之后又会来找A,那一个时候就有二种情况:一是A被回收,二是A没有被回收,被回
收的A就要重新调用onCreate()方法,分歧于直接开行的是那回onCreate()里是带上了参数savedInstanceState;而没被
收回的就直接执行onResume(),跳过onCreate()了。

40.什么样将一个Activity设置成窗口的体制。在AndroidManifest.xml
中定义Activity的地方一句话android:theme=”@android:style/Theme.Dialog”或
android:theme=”@android:style/Theme.Translucent”就成为半透明的

41.什么样退出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、抛万分强制退出:

该办法通过抛十分,使程序ForceClose。

表达可以,但是,要求缓解的题材是,怎么样使程序为止掉,而不弹出Force
Close的窗口。

2、记录打开的Activity:

每打开一个Activity,就记录下来。在急需退出时,关闭每一个Activity即可。

3、发送特定广播:

在急需收尾应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。

4、递归退出

在开拓新的Activity时选取startActivityForResult,然后自己加标志,在onActivityResult中拍卖,递归关闭。

而外第三个,都是想艺术把每一个Activity都甘休掉,直接达到目标。

但是如此做一样不周到。

您会意识,即使协调的应用程序对每一个Activity都安装了nosensor,在四个Activity停止的茶余饭后,sensor可能有效了。

但最少,大家的目的达到了,而且尚未影响用户拔取。

为了编程方便,最好定义一个Activity基类,处理那几个共通难点。

42.请介绍下Android中常用的各种布局。FrameLayout(框架布局),LinearLayout
(线性布局),AbsoluteLayout(相对布局),RelativeLayout(相对布局),TableLayout(表格布局)

43.请介绍下Android的数码存储方式。一.SharedPreferences方式

二.文书存储方式

三.SQLite数据库格局

四.内容提供器(Content provider)格局

五. 互连网存储形式

44.请介绍下ContentProvider是什么促成数据共享的。创设一个属于你协调的Content
provider或者将你的数目增加到一个曾经存在的Contentprovider中,前提是有一样数据类型并且有写入Content
provider的权位。

45.什么样启用Service,怎么着停用Service。Android中的service类似于windows中的service,service一般没有用户操作界面,它运行于系统中不易于被用户发现,

可以动用它支付如监控之类的次第。

一。步骤

第一步:继承Service类

public class SMSService extends Service { }

第二步:在AndroidManifest.xml文件中的节点里对劳动实行配备:

二。Context.startService()和Context.bindService

劳动不可以协调运行,需求经过调用Context.start瑟维斯()或Context.bindService()方法启动服务。这三个办法都可

以启动Service,可是它们的应用场合有所差异。

1.选用startService()方法启用服务,调用者与劳务时期没有牵涉,即便调用者退出了,服务仍然运行。

使用bindService()方法启用服务,调用者与服务绑定在了协同,调用者一旦退出,服务也就截至。

2.用到Context.startService()方法启动服务,在劳务未被创设时,系统会先调用服务的onCreate()方法,

进而调用onStart()方法。倘诺调用startService()方法前服务业已被创造,多次调用startService()方法并

不会招致很多次创办服务,但会促成多次调用onStart()方法。

应用startService()方法启动的劳务,只可以调用Context.stopService()方法截至劳动,服务为止时会调用

onDestroy()方法。

3.行使Context.bindService()方法启动服务,在服务未被创制时,系统会先调用服务的onCreate()方法,

继而调用onBind()方法。那一个时候调用者和劳动绑定在一块儿,调用者退出了,系统就会先调用服务的onUnbind()方法,

。接着调用onDestroy()方法。倘若调用bindService()方法前服务一度被绑定,很多次调用bindService()方法并不会

导致很多次开立服务及绑定(也就是说onCreate()和onBind()方法并不会被频仍调用)。要是调用者希望与正在绑定的劳务

免去绑定,可以调用unbindService()方法,调用该措施也会导致系统调用服务的onUnbind()–>onDestroy()方法。

三。Service的生命周期

1.Service常用生命周期回调方法如下:

onCreate()该措施在劳务被创制时调用,该格局只会被调用一遍,无论调用多少次startService()或bindService()方法,

服务也只被成立五遍。onDestroy()该方法在劳务被甘休时调用。

  1. Context.startService()启动瑟维斯有关的生命周期方法

onStart()唯有利用Context.startService()方法启动服务时才会回调该格局。该形式在劳动开首运行时被调用。

多次调用startService()方法即使不会频仍创设服务,但onStart()方法会被反复调用。

  1. Context.bindService()启动Service有关的生命周期方法

onBind()唯有应用Context.bindService()方法启动服务时才会回调该措施。该措施在调用者与劳动绑定时被调用,

当调用者与劳务已经绑定,数次调用Context.bind瑟维斯()方法并不会造成该形式被频仍调用。

onUnbind()只有利用Context.bindService()方法启动服务时才会回调该格局。该情势在调用者与劳动解除绑定时被调用。

备注:

1.用到startService()启动服务

Intent intent =new Intent(DemoActivity.this, DemoService.class);

startService(intent);

2.Context.bindService()启动

Intent intent =new Intent(DemoActivity.this, DemoService.class);

bindService(intent, conn, Context.BIND_AUTO_CREATE);

//unbindService(conn);//解除绑定

46.挂号广播有两种形式,那么些主意有啥优缺点?请谈谈Android引入广播机制的打算。Android广播机制(二种注册格局)

在android下,要想接受广播音信,那么这些广播接收器就得大家团结一心来促成了,大家能够继续BroadcastReceiver,就可以有一个播放接
受器了。有个接受器还不够,大家还得重写BroadcastReceiver里面的onReceiver方法,当来播音的时候我们要怎么,这就要大家自
己来促成,不过大家可以搞一个音信防火墙。具体的代码:

public class SmsBroadCastReceiverextends BroadcastReceiver

{

@Override

public void onReceive(Context context, Intent intent)

{

Bundle bundle = intent.getExtras();

Object[] object = (Object[])bundle.get(“pdus”);

SmsMessage sms[]=new SmsMessage[object.length];

for(int i=0;i

{

sms[0] =SmsMessage.createFromPdu((byte[])object);

Toast.makeText(context,
“来自”+sms.getDisplayOriginatingAddress()+”的音讯是:”+sms.getDisplayMessageBody(),Toast.LENGTH_SHORT).show();

}

//终止广播,在此间我们得以稍微处理,依据用户输入的号码可以完结短信防火墙。

abortBroadcast();

}

}

当落到实处了播音接收器,还要设置广播接收器接收播放音讯的品种,这里是音讯:android.provider.Telephony.SMS_RECEIVED

大家就可以把广播接收器注册到系统里面,能够让系统驾驭大家有个广播接收器。那里有三种,一种是代码动态注册:

//生成广播处理

smsBroadCastReceiver = newSmsBroadCastReceiver();

//实例化过滤器并设置要过滤的广播

IntentFilter intentFilter =
newIntentFilter(“android.provider.Telephony.SMS_RECEIVED”);

//注册广播

BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver,intentFilter);

一种是在AndroidManifest.xml中配备广播

package=”spl.broadCastReceiver”

android:versionCode=”1″

android:versionName=”1.0″>

android:label=”@string/app_name”>

两种注册项目标分化是:

1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。

2)第两种是常驻型,也就是说当应用程序关闭后,若是有信息播报来,程序也会被系统调用自动运行。

47.请说明下在单线程模型中Message、Handler、MessageQueue、Looper之间的涉及。Handler简介:

一个Handler允许你发送和拍卖Message和Runable对象,那个目标和一个线程的MessageQueue相关联。每一个线程实例和一个独门的线程以及该线程的MessageQueue相关联。当您创立一个新的Handler时,它就和创办它的线程绑定在联合了。那里,线程我们也能够掌握为线程的MessageQueue。从这点上来看,Handler把Message和Runable对象传递给MessageQueue,而且在这几个目的离开MessageQueue时,Handler负责执行他们。

Handler有三个根本的用处:(1)确定在未来的某部时刻点实施一个依旧有些Message和Runnable对象。(2)在别的线程(不是Handler绑定线程)中排入一些要执行的动作。

Scheduling Message,即(1),可以因此以下方式成功:

post(Runnable):Runnable在handler绑定的线程上执行,也就是说不成立新线程。

postAtTime(Runnable,long):

postDelayed(Runnable,long):

sendEmptyMessage(int):

sendMessage(Message):

sendMessageAtTime(Message,long):

sendMessageDelayed(Message,long):

post那些动作让你把Runnable对象排入MessageQueue,MessageQueue受到这几个音信的时候实施他们,当然以自然的排序。sendMessage那几个动作允许你把Message对象排成队列,那么些Message对象涵盖部分消息,Handler的hanlerMessage(Message)会处理那些Message.当然,handlerMessage(Message)必须由Handler的子类来重写。那是编程人士须要作的事。

当posting或者sending到一个Hanler时,你可以有三种行为:当MessageQueue准备好就处理,定义一个延迟时间,定义一个纯正的时日去处理。后两者允许你达成timeout,tick,和按照时间的作为。

当您的行使成立一个新的长河时,主线程(也就是UI线程)自带一个MessageQueue,这一个MessageQueue管理顶层的采用对象(像activities,broadcast
receivers等)和主线程创立的窗体。你可以创建自己的线程,并透过一个Handler和主线程举办通讯。那和前面一样,通过post和sendmessage来完毕,差距在于在哪一个线程中实施这么方法。在适当的时候,给定的Runnable和Message将在Handler的MessageQueue中被Scheduled。

Message简介:

Message类就是概念了一个新闻,这么些信息中蕴涵一个讲述符和任意的数量对象,这一个音讯被用来传递给Handler.Message对象提供额外的多少个int域和一个Object域,那足以让你在半数以上情状下不用作分配的动作。

即便Message的构造函数是public的,可是获取Message实例的最好法子是调用Message.obtain(),或者Handler.obtainMessage()方法,那个方法会从回收对象池中赢得一个。

MessageQueue简介:

这是一个包含message列表的平底类。Looper负责分发这么些message。Messages并不是直接加到一个MessageQueue中,而是经过MessageQueue.IdleHandler关联到Looper。

您可以由此Looper.myQueue()从如今线程中收获MessageQueue。

Looper简介:

Looper类被用来推行一个线程中的message循环。默许景况,没有一个音讯循环关联到线程。在线程中调用prepare()创立一个Looper,然后用loop()来拍卖messages,直到循环终止。

大部分和message loop的互相是经过Handler。

下边是一个典型的蕴藏Looper的线程完结。

class LooperThread extends Thread {

public Handler mHandler;

public void run() {

Looper.prepare();

mHandler = new Handler() {

public voidhandleMessage(Message msg) {

// process incomingmessages here

}

};

Looper.loop();

}

}

48.AIDL的全称是什么?怎么着行事?能处理哪些项目标数据?AIDL的英文全称是Android
Interface Define Language

当A历程要去调用B进度中的service时,并完毕通讯,大家平常都是经过AIDL来操作的

A工程:

率先我们在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,B工程才能找到A工程完毕通讯。

阐明:AIDL并不要求权限

B工程:

首先大家要将A工程中生成的RemoteService.java文件拷贝到B工程中,在bindService方法中绑定aidl服务

绑定AIDL服务就是将RemoteService的ID作为intent的action参数。

证实:即使大家单独将RemoteService.aidl文件放在一个包里,那些在我们将gen目录下的该包拷贝到B工程中。假使我们将RemoteService.aidl文件和我们的其他类存放在一起,那么大家在B工程中就要建立相应的包,以有限支撑RmoteService.java文件的申请正确,大家不能修改RemoteService.java文件

bindService(newInten(“net.blogjava.mobile.aidlservice.RemoteService”),serviceConnection,
Context.BIND_AUTO_CREATE);

ServiceConnection的onServiceConnected(ComponentName name,
IBinderservice)方法中的service参数就是A工程中MyService类中继承了RemoteService.stub类的其中类的目标。

49.请解释下Android程序运行时权限与文件系统权限的界别。运转时权限Dalvik(
android授权)

文件系统 linux 内核授权

50.系统上设置了各类浏览器,能仍然不能指定某浏览器访问指定页面?请证实原委。经过一贯发送Uri把参数带过去,或者通过manifest里的intentfilter里的data属性

51.你什么样评价Android系统?优缺点。答:Android平台手机 5大优势:

一、开放性

在优势方面,Android平台首先就是其开发性,开发的阳台允许其余活动终端厂商投入到Android联盟中来。显然的开放品质够使其持有越多的付出
者,随着用户和应用的逐渐丰盛,一个崭新的阳台也将很快走向成熟。开放性对于Android的前行而言,有利于积累人气,那里的人气席卷消费者和厂商,而
对于消费者来讲,随大的收益正是丰盛的软件资源。开放的阳台也会牵动更大竞争,如此一来,消费者将得以用更低的价位购得心仪的手机。

二、挣脱运营商的羁绊

在过去很长的一段时间,尤其是在欧美地区,手机使用往往受到运营商制约,使用什么效益衔接什么互联网,大概都备受运营商的控制。从二〇一八年OPPO上市,用户可以进一步便宜地连接网络,运营商的钳制缩小。随着EDGE、HSDPA这么些2G至3G移动网络的逐年过渡和提高,手机随意接入互联网已不是营业商
口中的笑谈,当您可以由此手机IM软件方便地进行即时聊天时,再纪念不久前日价的彩信和图铃下载业务,是还是不是像恶梦一样?网络巨头谷歌牵动的
Android终端天生就有网络特色,将让用户离互连网更近。

三、丰富的硬件选取

那一点要么与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功用特色各具的多种产品。功用上的歧异和特点,却
不会潜移默化到数量同步、甚至软件的匹配,好比你从索尼爱立信 Symbian风格手机
一下改用苹果 OPPO,同时还可将Symbian中完美的软件带到Samsung上拔取、联系人等材料越发能够方便地转换,是否更加便于呢?

四、不受任何限制的开发商

Android平台提须求第三方开发商一个分外广泛、自由的条件,不会受到种种条条框框的阻扰,不言而喻,会有稍许新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的先后和玩耍如可决定正是留给Android难题之一。

五、无缝结合的谷歌应用

当今叱诧网络的谷歌已经走过10寒暑历史,从寻找巨人到完善的网络渗透,谷歌(Google)服务如地图、邮件、搜索等已经变为连接用户和互联网的首要难点,而Android平台手机将无缝结合这一个可以的谷歌服务。

再说Android的5大不足:

一、安全和隐衷

由于手机与互连网的紧密联系,个人隐衷很难获取保守。除了上网进程中注意或不留心留下的村办足迹,谷歌这么些大个子也时刻站在您的身后,洞穿任何,因而,网络的入木三分将会带来新一轮的隐情风险。

二、首先开卖Android手机的不是最小运营商

确定性,T-Mobile在23日,于美利坚联邦合众国伦敦公布了Android首款手机G1。可是在北美市场,最大的两家营业商乃AT&T和
Verizon,而近年来所知取得Android手机销售权的仅有
T-Mobile和Sprint,其中T-Mobile的3G互连网绝对于其余三家也要没有不少,因而,用户可以买账购买G1,能不能体验到最佳的3G网络服
务则要另当别论了!

三、运营商仍是可以影响到Android手机

在境内市场,不少用户对购买移动定制机不满,感觉所购的手机被人涂画了广告一般。那样的情况在国外市场同样出现。Android手机的另一发售运营商Sprint就将在其机型中置放其无绳电话机商家程序。

四、同类机型用户裁减

在许多手机论坛都会有针对性某一型号的子论坛,对一款手机的施用体验交换,并分享软件资源。而对于Android平台手机,由于厂商充分,产品种类多种,那样使用同一款机型的用户越来越少,缺乏统一机型的次序强化。举个稍显不当的例证,现在山寨机泛滥,品种分歧,就很少有尤其针对某个型号山寨机的座谈和群
组,除了哪些职能卓殊抢眼、颇受追捧的机型以外。

五、过分器重开发商紧缺标准配置

在采纳PC端的Windows Xp系统的时候,都会安放微软Windows Media
Player那样一个浏览器先后,用户可以选拔更不知凡几的播放器,如Realplay或尘暴影音等。但入手起首利用默许的顺序一样可以应付各样的需求。在
Android平西安,由于其开放性,软件越多看重第三方厂商,比如Android系统的SDK中就没有放置音乐播放器,全体借助第三方支付,紧缺了出品
的统一性。

52.怎么是ANR 如何防止它?

答:ANR:Application NotResponding,五秒

在Android中,活动管理器和窗口管理器那四个系统服务承受监视应用程序的响应。当出现下列境况时,Android就会突显ANR对话框了:

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

打算接受器(intentReceiver)超越10分钟仍未执行完成

Android应用程序完全运转在一个独立的线程中(例如main)。那就意味着,任何在主线程中运行的,必要开销多量时日的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和用意广播(Intentbroadcast)。

因而,任何运行在主线程中的方法,都要尽可能的只做少量的行事。越发是活动生命周期中的首要情势如onCreate()和
onResume()等更应那样。潜在的比较耗时的操作,如访问互联网和数据库;或者是开发很大的乘除,比如改变位图的轻重缓急,必要在一个独立的子线程中完结

(或者是选取异步请求,如数据库操作)。但那并不意味你的主线程必要进入阻塞状态已等待子线程为止

也不必要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程
在即将收尾的时候调用它(xing:可以参照Snake的例子,那种格局与原先俺们所接触的悬殊)。使用那种方法涉及你的应用程序,能够确保你的次第
对输入保持突出的响应,从而防止因为输入事件当先5秒钟不被处理而爆发的ANR。那种实践需求动用到持有突显用户界面的线程,因为她们都面临着相同的超时
难点。

53.怎么着动静会招致Force Close ?怎么着防止?能不能捕获导致其的可怜?

答:一般像空指针啊,可以看起logcat,然后对应到程序中 来缓解错误

54.Android本人的api并未申明会抛出更加,则其在运转时有无可能抛出runtime分外,你遇到过啊?诺有的话会造成怎么样难题?怎样缓解?

55.简要说圣元(Synutra)下activity、 intent 、intent
filter、service、Broadcase、BroadcaseReceiver

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

一个service不包罗可知的用户界面,而是在后台无限地运作

可以接连到一个正在运转的劳务中,连接后,能够经过劳动中揭穿无遗出来的借口与其开展通讯

一个broadcast
receiver是一个收到播放新闻并作出答复的component,broadcastreceiver没有界面

intent:content provider在接收到ContentResolver的请求时被激活。

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

一个intent是一个Intent对象,它保存了新闻的情节。对于activity和service来说,它指定了请求的操作名称和待操作数据的URI

Intent对象能够显式的指定一个对象component。假如这样的话,android会找到这几个component(基于manifest文件
中的注明)并激活它。但万一一个对象不是显式指定的,android必须找到响应intent的特等component。

它是因而将Intent对象和目的的intent
filter相相比较来落成这一工作的。一个component的intent
filter告诉android该component能处理的intent。intent
filter也是在manifest文件中宣示的。

56.IntentService有啥优点?

答:IntentService 的好处

* Acitivity的进度,当处理Intent的时候,会发出一个遥相呼应的Service

* Android的长河处理器现在会尽可能的不kill掉你

* 万分不难使用

57.横竖屏切换时候activity的生命周期?

1、不设置Activity的android:configChanges时,切屏会重新调用各种生命周期,切横屏时会执行四回,切竖屏时会执行五遍

2、设置Activity的android:configChanges=”orientation”时,切屏照旧会重复调用各样生命周期,切横、竖屏时只会履行一遍

3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会再度调用种种生命周期,只会执行onConfigurationChanged方法

如何将SQLite数据库(dictionary.db文件)与apk文件一起发表?

解答:可以将dictionary.db文件复制到Eclipse Android工程中的res
aw目录中。所有在res
aw目录中的文件不会被减弱,那样能够向来领取该目录中的文件。可以将dictionary.db文件复制到res
aw目录中

58.如何将开辟res aw目录中的数据库文件?

解答:在Android中不可以直接打开res
aw目录中的数据库文件,而急需在先后第四次启动时将该公文复制到手机内存或miniSD闪存卡的某个目录中,然后再打开该数据库文件。复制的骨干格局是行使
getResources().openRawResource方法取得res aw目录中资源的
InputStream对象,然后将该InputStream对象中的数据写入其它的目录中相应文件中。在Android
SDK中得以采用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

59.Android引入广播机制的企图?

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

实际回答这些题材的时候还足以这么问,android为啥要有那4大组件,现在的移动支付模型基本上也是照搬的web那一套MVC架构,只然则是改了
点嫁妆而已。android的四大组件本质上就是为了贯彻活动照旧说嵌入式设备上的MVC架构,它们中间有时是一种相互依存的关联,有时候又是一种补偿
关系,引入广播机制可以便宜几大组件的音信和数目交互。

b:程序间互通新闻(例如在自己的应用程序内监听系统来电)

c:效用上(参考UDP的播放协议在局域网的方便性)

d:设计格局上(反转控制的一种选择,类似监听者格局)

60.Android dvm的长河和Linux的长河, 应用程序的进程是还是不是为同一个概念

DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的长河中运作,都拥有一个独自的Dalvik虚拟机实例。而每一个DVM都是在Linux
中的一个历程,所以说可以认为是同一个定义。

61.sim卡的EF 文件有啥意义

sim卡的文件系统有温馨专业,紧如若为着和手机通信,sim本身可以有协调的操作系统,EF就是作存储并和手机通信用的

62.嵌入式操作系统内存管理有哪两种,各有什么特点

页式,段式,段页,用到了MMU,虚拟空间等技能

63.怎么样是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

嵌入式实时操作系统是指当外界事件或数额暴发时,可以承受并以足够快的进度予以拍卖,其拍卖的结果又能在确定的时光之内来支配生产进度或对拍卖系统作
出高速响应,并操纵所有实时义务协调一致运行的嵌入式操作系统。首要用于工业控制、军事设备、航空航天等世界对系统的响应时间有苛刻的必要,那就必要采用实时系统。又可分为软实时和硬朗时三种,而android是基于linux内核的,因而属于软实时。

64.一条最长的短信息约占多少byte?

华语70(包罗标点),英文160,160个字节。

65.android中的动画有哪几类,它们的特性和界别是什么?

三种,一种是Tween动画、还有一种是Frame动画。Tween动画,那种完毕格局可以使视图组件移动、放大、裁减以及暴发透明度的变迁;另一种Frame动画,传统的卡通方法,通过逐个的播音排列好的图片来达成,类似电影。

66.handler机制的规律

andriod提供了Handler 和 Looper
来满意线程间的通信。Handler先进先出原则。Looper类用来治本特定线程内对象之间的音信调换(MessageExchange)。

1)Looper:
一个线程可以生出一个Looper对象,由它来治本此线程里的MessageQueue(音信队列)。

2)Handler:
你可以协会Handler对象来与Looper调换,以便push新音讯到MessageQueue里;或者接受Looper从Message
Queue取出)所送来的音信。

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

4)线程:UIthread 常常就是main
thread,而Android启动程序时会替它手无寸铁一个MessageQueue。

67.说说mvc形式的原理,它在android中的运用

MVC(Model_view_contraller)”模型_视图_控制器”。
MVC应用程序总是由那么些部分组成。伊夫nt(事件)导致Controller改变Model或View,或者同时更改两者。只要
Controller改变了Models的数额或者性质,所有保护的View都会自动更新。类似的,只要Contro

68.DDMS和TraceView的区别?DDMS是一个程序执行查看器,在其中可以瞥见线程和货栈等音信,TraceView是程序品质分析器。

69.java中哪些引用本地语言可以用JNI(java nativeinterfacejava
本地接口)接口。

70.谈谈Android的IPC(进度间通讯)机制IPC是内部进度通讯的简称,是共享”命名管道”的资源。Android中的IPC机制是为了让Activity和Service之间能够随时的进展互动,故在Android
中该机制,只适用于Activity和Service之间的通讯,类似于远程方法调用,类似于C/S形式的走访。通过定义AIDL接口文件来定义IPC接
口。Servier端完结IPC接口,Client端调用IPC接口本地代理。

71.NDK是什么NDK是一对列工具的汇集,NDK提供了一多重的工具,辅助开发者急速的支付C/C++的动态库,并能自动将so和java
应用打成apk包。

NDK集成了接力编译器,并提供了对应的mk文件和隔断cpu、平台等的差异,开发人员只需简单的改动mk文件就足以成立出so

发表评论

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