Android面试题目整理(自用)

一、Activity的生命周期

         正常启动:onCreate->onStart->onResume

        finish:onPause->onStop->onDestroy

        被终止(例如来电话):onPause->onStop 后被恢复:onStart-onResume

        被打断(如弹出一个Theme为Dialog的Activity):onPause    恢复:onResume


       onCreate:创建界面以及一些数据的初始化

       onStart:用户可见但不可交互

       onResume:可和用户交互;恢复保存的数据

       onPause:可见不可交互,系统会停止动画等消耗CPU的事情;保存数据

       onStop:不可见,被下一个activity覆盖

       onDestroy:activity被finish掉前调用的最后一个方法,如果有Dialog在线程启动,需在该方法中cancel掉,否则等线程结束后再调用cancel会抛出异常


注:在onPause、onStop和onDestroy三种状态下,activity可能会被系统finish掉


二、Android中的动画有哪几类,他们的特点和区别是什么?

      1、Tween动画:可实现视图组件的移动、放大、缩小以及产生透明度的变化;

      2、Frame动画:传动动画方法,通过顺序的播放排列好的图片来实现


三、Handler机制的原理

      Android提供了Handler和Loop而来满足线程间的通信。

     Handler先进先出原则。

     Looper类用来管理特定线程内对象之间的信息交换(Message Exchange)


    1、Looper:一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列);

    2、Handler:可构造Handler对象与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)送来的消息;

    3、Message Queue:用来存放线程放入的消息

    4、线程:UI thread 通常就是main thread,而Android启动程序时就会替它建立一个Message Queue


四、请介绍下Android中常用的五种布局

      1、FrameLayout(框架布局)

      2、LinearLayout(线性布局)

      3、AbsoluteLayout(绝对布局)

      4、RelativeLayout(相对布局)

      5、TableLayout(表格布局)


五、请介绍下Android的数据存储方式

        1、SharedPreference

       2、文件存储方式

       3、SQLite数据库

       4、内容提供器(Content Provider)

       5、网络存储


六、请介绍下ContentProvider是如何实现数据共享的

        创建一个ContentProvider或者将数据添加到一个已经存在的ContentProvider中,前提是有相同的数据类型并且有写入ContentProvider的权限


七、如何启用和停用Service

       1、编写一个继承Service的类

        2、在AndroidManifest.xml中对该Service进行注册

        3、通过Context.startService()或者Context.bindService()方法启动服务

                startService()方法启动服务,调用者与服务之间没有关联,即使调用者退出了,服务仍然运行;

                bindService()方法启动服务,调用者与服务之间绑定在了一起,调用者一旦退出,服务也就终止了。

       4、其分别对应stopService()和unbindService()方法来停用服务


八、注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。

       1、动态注册(在Java代码中注册)

            该广播不是常驻型广播,广播会跟随程序的生命周期


       2、静态注册(在AndroidManifest.xml中注册)

           该广播为常驻型广播,当程序关闭后,如果有信息广播来,程序也会被系统自行运行起来。


九、横竖屏切换的时候Activity的生命周期

      1、不设置Activity 的android:configChanges时,切屏会重新调用各个生命周期,切模屏时会执行一次,切竖屏时会执行两次;

      2、设置Activity 的android:configChanges="orientation" 时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次;

      3、设置Activity 的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法





以上资源都是通过网上资料整理而得,不足之处请多多指教

你可能感兴趣的:(android,面试)