航天科工[转]Android 70道面试题

本文转自:http://tech.it168.com/a2012/0201/1305/000001305470_2.shtml

IT168技术】本文为开发者奉献了70鸣经典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). c A、11
,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12

  4. 下列程序段的出口结果是:(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、true B、false C、1 D、011.activity

  5.
对准片资源和状态的操作保存,最好是保存在生命周期的谁函数中开展(d)
A、onPause() B、onCreate() C、 onResume() D、onStart()

  6. Intent传递数据时,下列的数据类型哪些可以让传送(abcd)(多选)
A、Serializable B、charsequence C、Parcelable D、Bundle

  7. android 中下列属于Intent的图的凡(c) A、实现应用程序间的数据共享

  B、是同段长的生命周期,没有用户界面的程序,可以保障以在后台运行,而休见面坐切换页面而化为乌有

  C、可以实现界面间的切换,可以分包动作与动作数据,连接四坏组件的枢纽

  D、处理一个应用程序整体性的办事

  8. 下列属于SAX解析xml文件之优点的凡(b)
A、将不折不扣文档树在内存中,便于操作,支持删除,修改,重新排列等又效益

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

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

  D、不是漫漫驻留在内存,数据不是持之以恒的,事件了后,若没保留数据,数据就是会见

  消失

  9. 脚的针对性由自然style的道对的凡

A、 <resources>       
<style name=”myStyle”>
                            <itemname=”android:layout_width”>fill_parent</item>
                     </style></resources>     
B、 <style name=”myStyle”>
                            <itemname=”android:layout_width”>fill_parent</item>   
</style>     
C、 <resources>
                            <itemname=”android:layout_width”>fill_parent</item>  
</resources>     
D、 <resources>
                            <stylename=”android:layout_width”>fill_parent</style>  
</resources>

  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、管理一个surface,这个surface就是一模一样片突出的内存,能一直排版到android的视图

  view上。

  B、管理一个EGL display,它能给opengl把内容渲染到上述的surface上。

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

  D、可以直接打内存还是DMA等硬件接口取得图像数据

  16. 底在AndroidManifest.xml文件被登记BroadcastReceiver方式正确的

A、<receiver android:name=”NewBroad”>
                     <intent-filter>
                            <action 
                   android:name=”android.provider.action.NewBroad”/>
                <action>
                     </intent-filter>
              </receiver>     
B、<receiver android:name=”NewBroad”>
                     <intent-filter>
                   android:name=”android.provider.action.NewBroad”/>
                     </intent-filter>
              </receiver>     
C、<receiver android:name=”NewBroad”>
                     <action 
                  android:name=”android.provider.action.NewBroad”/>
             <action>
              </receiver>     
D、<intent-filter>
         <receiver android:name=”NewBroad”>
                           <action>
                   android:name=”android.provider.action.NewBroad”/>
                  <action>
                     </receiver></intent-filter>

  17. 关于ContenValues类说法科学的是(a)
A、他与Hashtable比较像样,也是负责储存一些名值对,但是他存储的名值对中的

  名是String类型,而值都是中心类型

  B、他同Hashtable比较像样,也是背负储存一些名值对,但是他存储的名值对中等的

  名是自由档次,而值都是中心类型

  C、他同Hashtable比较像样,也是负储存一些名值对,但是他存储的名值对中的

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

  D、他同Hashtable比较接近,也是负担储存一些名值对,但是他存储的名值对中间

  的叫做是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、Tween B、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. 下列对android NDK的领悟科学的凡(abcd )A、 NDK是一致文山会海工具的集聚

  B、 NDK 提供了平客稳定、功能有限的 API 头文件宣称。

  C、 使 “Java+C” 的开发方式终于转正,成为合法支持的开发方式

  D、 NDK 将凡 Android 平台支持 C 开发的开始

  二.文件存储方

  三.SQLite数据库方式

  四.情提供器(Content provider)方式

  老二、Android面试填空题

25.
android着常用之季个布局是framlayout,linenarlayout,relativelayout和tablelayout。

  1. android 的季万分组件是activiey,service,broadcast和contentprovide。

27.
java.io包中之objectinputstream和objectoutputstream类主要用于对目标(Object)的读写。

  1. 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.____________________________________。

  1. 程序运行的结果是:_____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 DBHelper extends 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艺术

  五. 网络存储方

  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.startService()或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()该措施在服务让终止时调用。

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

  onStart()
只来利用Context.startService()方法启动服务时才会回调该方式。该方式在服务开始运行时于调用。

  多次调用startService()方法尽管未会见频创建服务,但onStart()方法会被频繁调用。

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

  onBind()只来使Context.bindService()方法启动服务时才见面回调该方式。该方式在调用者与劳动绑定时受调用,

  当调用者与劳务已经绑定,多次调用Context.bindService()方法并无见面促成拖欠方式给数调用。

  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的迈入而言,有利于积累人气,这里的人气席卷消费者及厂商,而对此消费者来讲,随大之受益正是长的软件资源。开放的平台为会带重新甚竞争,如此一来,消费者将好为此更小之价位购得心仪之手机。

  二、挣脱运营商的封锁

  于过去死丰富之一段时间,特别是在欧美地区,手机用往往吃运营商制约,使用什么效益衔接什么网络,几乎都着运营商的操纵。从去年iPhone
上市
,用户可更进一步有益地连网络,运营商的制减少。随着EDGE、HSDPA这些2G暨3G走网络的慢慢过渡和升级,手机随意接入网络都非是运营商口中之笑料,当你可经过手机IM软件方便地开展当下聊天经常,再回顾不久前天价的彩信和图铃下充斥业务,是未是诸如噩梦一样?互联网巨头Google推动的Android终端天生就发出网特征,将给用户距离互联网更近乎。

  三、丰富的硬件选择

  这一点要同Android平台的开放性相关,由于Android的开放性,众多之厂商会推出千奇百怪,功能特色各具的多种产品。功能上的区别和特征,却未会见潜移默化至数并、甚至软件的相当,好于你于诺基亚
Symbian风格手机 一下改用苹果 iPhone
,同时还可拿Symbian中可以之软件带顶iPhone上行使、联系人等资料更加可以好地变换,是匪是格外有利于呢?

  四、不叫外限制的开发商

  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手机

  以境内市场,不少用户对购进移动定制机不充满,感觉所购买的无绳电话机为人涂画了广告一般。这样的事态以国外市场同样出现。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. 大概解释一下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会找到这com航天科工ponent(基于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目录中之数据库文件,而欲以次第一潮开行时以该公文复制到手机内存还是SD卡的某个目录中,然后再打开该数据库文件。复制的中坚方法是以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应用程序总是由这三个组成部分组成。Event(事件)导致Controller改变Model或View,或者以更改两者。只要Controller改变了Models的数目或者性质,所有因之View都见面自动更新。类似之,只要Contro

  68. DDMS和TraceView的别?
DDMS是一个程序执行查看器,在里边可以瞥见线程和货栈等信息,TraceView是程序性能分析器

  69. java中什么引用本地语言 可以为此JNI(java nativeinterface java
本地接口)接口。

  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

发表评论

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