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

发表评论

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