70道面试题汇总766游戏网官网

 

  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)。(多选)

766游戏网官网,     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、管理一个三星GALAXY Tab,这些GALAXY Tab就是一块优异的内存,能直接排版到android的视图view上。

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

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

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

  16.
上面在AndroidManifest.xml文件中登记布罗德(Broad)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.start瑟维斯(Service)()或Context.bind瑟维斯(Service)(Service)()方法启动服务。那七个法子都可

  以启动Service(Service),但是它们的应用场合有所不相同。

  1.行使startService(Service)()方法启用服务,调用者与服务时期平昔不牵涉,即便调用者退出了,服务照旧运行。

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

  2.选择Context.startService()方法启动服务,在劳务未被创建时,系统会先调用服务的onCreate()方法,

  接着调用onStart()方法。如若调用startService()方法前服务业已被成立,很多次调用startService()方法并

  不会促成很多次开立服务,但会造成多次调用onStart()方法。

  采纳startService()方法启动的劳务,只可以调用Context.stopService()方法截止劳动,服务为止时会调用

  onDestroy()方法。

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

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

  。接着调用onDestroy()方法。假使调用bind瑟维斯(Service)()方法前服务一度被绑定,数次调用bindService()方法并不会

  导致多次创办服务及绑定(也就是说onCreate()和onBind()方法并不会被频仍调用)。假使调用者希望与正在绑定的劳务

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

  三。瑟维斯(Service)(Service)的生命周期

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

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

  服务也只被创设五回。
onDestroy()该方法在服务被为止时调用。

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

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

  数十次调用start瑟维斯(Service)()方法尽管不会反复创办服务,但onStart()方法会被频仍调用。

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

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

  当调用者与劳务一度绑定,很多次调用Context.bindService()方法并不会造成该方式被频仍调用。

  onUnbind()唯有使用Context.bind瑟维斯(Service)(Service)()方法启动服务时才会回调该办法。该措施在调用者与服务解除绑定时被调用。

  备注:

  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);
  //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(Service).aidl文件,在中间大家自定义一个接口,含有方法get。ADT插件会在gen目录下自动生成一个RemoteService(Service).java文件,该类中含有一个名为Remote瑟维斯(Service)(Service).stub的里边类,该内部类中含有aidl文件接口的get方法。

  说雅培(Abbott):aidl文件的岗位不稳定,可以肆意

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

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

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

  表明:AIDL并不须求权限

  B工程:

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

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

  表明:如果我们单独将Remote瑟维斯(Service)(Service).aidl文件放在一个包里,这些在大家将gen目录下的该包拷贝到B工程中。假如大家将RemoteService.aidl文件和我们的其他类存放在一块儿,那么大家在B工程中就要建立相应的包,以有限援助Rmote瑟维斯(Service)(Service).java文件的报名正确,我们不可以修改RemoteService.java文件

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

  ServiceConnection的on瑟维斯(Service)Connected(ComponentName
name,
IBinderservice)方法中的service参数就是A工程中My瑟维斯(Service)(Service)类中三番五次了RemoteService.stub类的其中类的目标。

  49.
请表达下Android程序运行时权限与文件系统权限的区分。运行时权限Dalvik(
android授权)

  文件系统 linux 内核授权

  50.
种类上设置了多种浏览器,能或不能指定某浏览器访问指定页面?请表达原委。通过一贯发送Uri把参数带过去,或者通过manifest里的intentfilter里的data属性

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

  一、开放性

  在优势方面,Android平台首先就是其开发性,开发的阳台允许其余活动终端厂商参加到Android联盟中来。分明的开放性可以使其颇具越来越多的开发者,随着用户和拔取的逐级丰盛,一个全新的阳台也将迅速走向成熟。开放性对于Android的升华而言,有利于积累人气,那里的人气席卷消费者和厂商,而对此消费者来讲,随大的受益正是丰富的软件资源。开放的阳台也会带动更大竞争,如此一来,消费者将得以用更低的标价购得心仪的手机

  二、挣脱运营商的约束

  在过去很长的一段时间,更加是在欧美地区,手机应用往往碰着运营商制约,使用什么效劳衔接什么网络,大概都饱受运营商的操纵。从上年Motorola上市
,用户可以进一步有利地接二连三网络,运营商的牵制收缩。随着EDGE、HSDPA那么些2G至3G活动网络的渐渐过渡和升级换代,手机随机接入网络已不是营业商口中的笑谈,当你可以经过手机IM软件方便地开展当下聊天时,再回看不久今日价的彩信和图铃下载业务,是否像恐怖的梦一样?互联网巨头Google推动的Android终端天生就有网络特色,将让用户离互联网更近。

  三、充足的硬件接纳

  那或多或少要么与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,作用特色各具的多种产品。功效上的反差和特性,却不会影响到多少同步、甚至软件的匹配,好比你从摩托罗拉Symbian风格手机 一下改用苹果 华为,同时还可将Symbian中雅观的软件带到中兴上利用、联系人等资料尤其可以便宜地转移,是否不行便宜呢?

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

  Android平台提需求第三方开发商一个异平时见、自由的条件,不会遭到种种条条框框的阻扰,不言而喻,会有些许新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如可决定正是留给Android难题之一。

  五、无缝结合的谷歌应用

  近来叱诧互联网的Google已经走过10寒暑历史,从查找巨人到周密的互联网渗透,谷歌服务如地图、邮件、搜索等早已变成连接用户和互联网的最主要关键,而Android平台手机将无缝结合这个精美的谷歌服务。

  再说Android的5大不足:

  一、安全和隐衷

  由于手机与互联网的紧密联系,个人隐衷很难得到保守。除了上网进度中注意或不在意留下的个体足迹,谷歌(Google)这几个大个子也整日站在你的身后,洞穿任何,因而,互联网的中肯将会带动新一轮的隐衷危机。

  二、首先开卖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. 简易说多美滋(Aptamil)下activity、 intent
、intent filter、service、Broadcase、布罗德(Broad)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.  Intent瑟维斯(Service)(Service)有啥优点?

  答: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应用程序总是由那三个部分构成。伊芙(Eve)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之间可以随时的展开交互,故在Android中该机制,只适用于Activity和瑟维斯之间的通讯,类似于远程方法调用,类似于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

发表评论

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