一、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方法
以上资源都是通过网上资料整理而得,不足之处请多多指教