Android 70道面试题汇总

 

  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)

     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目录的图是啊b

    A、放置应用及之图形资源。

  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。

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

 

本文转自:http://www.cnblogs.com/kakafra/archive/2012/09/29/2708446.html

发表评论

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