[转]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会找到这个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目录中之数据库文件,而得在先后第一软开行时拿欠公文复制到手机内存还是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

相关文章