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、管理一个华为平板,这几个苹果平板就是一块出色的内存,能一向排版到android的视图view上。

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

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

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

  16.
上面在AndroidManifest.xml文件中注册布罗德castReceiver格局正确的

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),怎么着停用Service。Android中的service类似于windows中的service,service一般从不用户操作界面,它运行于系统中不简单被用户发现,

  可以使用它开发如监控之类的次第。

  一。步骤

  第一步:继承Service类

  public class SMSService extends
Service { }

  第二步:在AndroidManifest.xml文件中的节点里对服务开展配备:

  二。Context.startService()和Context.bindService

  服务无法自己运行,须要经过调用Context.startService(Service)()或Context.bind瑟维斯(Service)(Service)()方法启动服务。这五个章程都可

  以启动瑟维斯(Service)(Service),不过它们的选用场面有所分裂。

  1.利用start瑟维斯(Service)()方法启用服务,调用者与劳务中间没有牵涉,即使调用者退出了,服务照旧运行。

  使用bindService()方法启用服务,调用者与服务绑定在了联合,调用者一旦退出,服务也就止住。

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

  接着调用onStart()方法。假如调用start瑟维斯(Service)()方法前服务一度被创建,很多次调用start瑟维斯(Service)()方法并

  不会导致很多次开立服务,但会招致很多次调用onStart()方法。

  拔取start瑟维斯(Service)(Service)()方法启动的劳动,只可以调用Context.stop瑟维斯(Service)(Service)()方法截至劳动,服务截至时会调用

  onDestroy()方法。

  3.利用Context.bind瑟维斯(Service)(Service)()方法启动服务,在劳动未被创立时,系统会先调用服务的onCreate()方法,

  接着调用onBind()方法。这么些时候调用者和劳动绑定在协同,调用者退出了,系统就会先调用服务的onUnbind()方法,

  。接着调用onDestroy()方法。假若调用bind瑟维斯(Service)(Service)()方法前服务业已被绑定,很多次调用bindService()方法并不会

  导致数十次开立服务及绑定(也就是说onCreate()和onBind()方法并不会被一再调用)。倘若调用者希望与正在绑定的服务

  解除绑定,可以调用unbindService(Service)()方法,调用该方法也会导致系统调用服务的onUnbind()–>onDestroy()方法。

  三。Service(Service)的生命周期

  1.瑟维斯(Service)(Service)常用生命周期回调方法如下:

  onCreate()
该格局在服务被创立时调用,该方法只会被调用五次,无论调用多少次start瑟维斯(Service)()或bindService()方法,

  服务也只被成立一遍。
onDestroy()该办法在劳动被为止时调用。

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

  onStart()
唯有应用Context.start瑟维斯(Service)(Service)()方法启动服务时才会回调该措施。该措施在劳动初始运行时被调用。

  数次调用start瑟维斯(Service)(Service)()方法即使不会频繁创设服务,但onStart()方法会被反复调用。

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

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

  当调用者与劳动已经绑定,数次调用Context.bind瑟维斯(Service)(Service)()方法并不会促成该措施被频繁调用。

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

  备注:

  1. 利用start瑟维斯(Service)(Service)()启动服务

  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);
  //unbind瑟维斯(Service)(conn);//解除绑定

“  46.
注册广播有二种艺术,那个方式有什么优缺点?请谈谈Android引入广播机制的来意。
Android广播机制(二种注册情势)

  在android下,要想接受广播消息,那么这一个广播接收器就得大家协调来促成了,大家得以持续布罗德(Broad)castReceiver,就足以有一个广播接受器了。有个接受器还不够,大家还得重写布罗德(Broad)castReceiver里面的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(Service).java文件,该类中富含一个名为Remote瑟维斯.stub的里边类,该内部类中含有aidl文件接口的get方法。

  说Bellamy(Bellamy):aidl文件的任务不固定,可以任意

  然后定义自己的My瑟维斯(Service)类,在MyService类中自定义一个里面类去继承RemoteService(Service).stub那几个里面类,实现get方法。在onBind方法中回到这些里面类的靶子,系统会自行将以此目的封装成IBinder对象,传递给她的调用者。

  其次须求在AndroidManifest.xml文件中布局My瑟维斯(Service)类,代码如下:

  为什么要指定调用AIDL服务的ID,就是要报告外界My瑟维斯(Service)那么些类可以被其他进度访问,只要其他进度知道这一个ID,正是有了这一个ID,B工程才能找到A工程落实通讯。

  表明:AIDL并不必要权限

  B工程:

  首先大家要将A工程中生成的Remote瑟维斯(Service)(Service).java文件拷贝到B工程中,在bindService方法中绑定aidl服务

  绑定AIDL服务就是将Remote瑟维斯(Service)(Service)的ID作为intent的action参数。

  表达:如若大家单独将Remote瑟维斯(Service)(Service).aidl文件放在一个包里,那么些在我们将gen目录下的该包拷贝到B工程中。如若大家将RemoteService.aidl文件和大家的别样类存放在一起,那么大家在B工程中即将建立相应的包,以保证Rmote瑟维斯(Service).java文件的提请正确,我们不可能修改RemoteService.java文件

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

  ServiceConnection的on瑟维斯(Service)(Service)Connected(ComponentName
name,
IBinderservice)方法中的service参数就是A工程中MyService(Service)类中连续了Remote瑟维斯(Service).stub类的内部类的靶子。

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

  文件系统 linux 内核授权

  50.
系统上设置了多种浏览器,能依旧不能指定某浏览器访问指定页面?请证实原因。通过一向发送Uri把参数带过去,或者通过manifest里的intentfilter里的data属性

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

  一、开放性

  在优势方面,Android平台首先就是其开发性,开发的阳台允许其余活动终端厂商投入到Android联盟中来。鲜明的开放性可以使其拥有越多的开发者,随着用户和应用的逐步丰硕,一个全新的阳台也将很快走向成熟。开放性对于Android的向上而言,有利于积累人气,那里的人气席卷消费者和厂商,而对于消费者来讲,随大的受益正是丰裕的软件资源。开放的阳台也会带动更大竞争,如此一来,消费者将得以用更低的价位购得心仪的手机

  二、挣脱运营商的自律

  在过去很长的一段时间,越发是在欧美地区,手机使用往往受到运营商制约,使用什么功能衔接什么网络,大致都碰着运营商的主宰。从二〇一八年小米上市
,用户可以越发便利地接连网络,运营商的制缩短少。随着EDGE、HSDPA这个2G至3G平移网络的日趋过渡和升级换代,手机随机接入网络已不是营业商口中的笑谈,当你可以经过手机IM软件方便地开展及时聊天时,再回看不久后天价的彩信和图铃下载业务,是还是不是像梦魇一样?互联网巨头谷歌(Google)推动的Android终端天生就有网络特色,将让用户离互联网更近。

  三、丰裕的硬件接纳

  那一点要么与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,效率特色各具的多种产品。功用上的不一致和特点,却不会潜移默化到多少同步、甚至软件的匹配,好比你从酷派Symbian风格手机 一下改用苹果 HUAWEI,同时还可将Symbian中有口皆碑的软件带到华为上行使、联系人等材料越发可以方便地转换,是否不行有利啊?

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

  Android平台提须求第三方开发商一个不胜大规模、自由的环境,不会碰着各个条条框框的阻扰,由此可见,会有微微新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的主次和游玩如可控制正是留给Android难题之一。

  五、无缝结合的谷歌应用

  方今叱诧互联网的谷歌(Google)已经度过10年度历史,从寻觅巨人到宏观的互联网渗透,谷歌(Google)服务如地图、邮件、搜索等曾经化为连年用户和互联网的基本点枢纽,而Android平台手机将无缝结合这几个美妙的谷歌(Google)服务。

  再说Android的5大不足:

  一、安全和隐衷

  由于手机与互联网的紧密联系,个人隐衷很难取得保守。除了上网进程中注意或不留意留下的私家足迹,谷歌那些大个子也随时站在您的身后,洞穿任何,因而,互联网的深透将会带动新一轮的难言之隐危机。

  二、首先开卖Android手机的不是最命宫营商

  众所周知,T-Mobile在23日,于花旗国伦敦(London)发表了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、布罗德(Broad)case、布罗德caseReceiver

  答:一个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_766游戏网官网,contraller)”模型_视图_控制器”。
MVC应用程序总是由这多个部分构成。伊夫nt(事件)导致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(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

发表评论

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