您的位置:首页 > 移动开发 > Android开发

Android_Base_Interview

2016-04-20 10:39 246 查看

Android

1、Activity与Fragment的生命周期。

Fragment Add:onAttach->onCreate->onCreateView->onActivityCreate->onStart->onResume
Fragment Active:onPause->onStop->onDestroyView->onDestroy->onDetach
Activity:onCreate->onStart->onResume->onPause->onStop->onDestroy


2、 Acitivty的四中启动模式与特点。

Standard模式:默认模式,只要创建该Activity实例,一旦激活,则会向任务栈中加入新创建的实例,直到退出App;

SingTop模式:这种模式只会考虑当前要激活的实例是否在栈顶,如果处于栈顶,不再创建新实例;

SingTask模式:如果任务栈中存在该模式的Activity实例,则把栈中该实例以上的Activity实例全部移出,调用该实例的newInstance()方法重用该Activity,使该实例处于栈顶位置,否则就重新创建一个新的实例;

SingInstance模式:当前模式Activity实例在任务栈中创建后,只要该实例还在任务栈中,都会通过newInstance()方法重用该Activity,此时使用的都是同一个Activity实例,它都会处于任务栈的栈顶,此模式一般用于加载较慢的,比较耗性能且不需要每次都重新创建的Activity;

3、 Activity缓存方法。

在onSaveInstanceState中保存数据,当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用。onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用。

4、 Service的生命周期,两种启动方法,有什么区别。

Context.startService(),此时service会经历onCreate->onStart,onStart可以被多次调用,onCreate只调用一次,Context.stopService后服务定制;

Context.bindService(),此时service会经历onCreate()->onBind(),同时返回一个IBind接口实例,允许客户端回调服务方法,service与调用者绑定;

5、怎么保证service不被杀死。

在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = “1000”这个属性设置最高优先级

6、 广播的两种注册方法,有什么区别。

常驻型广播,在androidmainifast.xml中注册receiver,设置action;

非常驻广播,当应用程序结束了,广播自然就没有了,比如在 Activity 中的 onCreate 或者 onResume 中注册广播接收者,在 onDestory 中注销广播接收者;

7、Intent的使用方法,可以传递哪些数据类型。

Intent/Bundle支持传递基本类型的数据和基本类型的数组数据,以及String/CharSequence类型的数据和String/CharSequence类型的数组数据,还可以传递Parcelable(包裹化)和Serializable(序列化),以及他们的数组/列表数据;

8、ContentProvider使用方法。

在Android中,如果要创建自己的内容提供者的时候,需要扩展抽象类ContentProvider,并重写其中定义的各种方法。然后在AndroidManifest.xml文件中注册该ContentProvider即可。

9、Thread、AsycTask、IntentService的使用场景与特点。

Thread:线程

AsycTask:是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.

IntentService: 异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务。

10、五种布局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、 TableLayout 各自特点及绘制效率对比。

FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,通常用来作为自定义布局的parent;

LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素,通常用来作为图文混排展示类数据的UI;

AbsoluteLayout 可以让子元素指定准确的x/y坐标值,并显示在屏幕上;

RelativeLayout 允许子元素指定他们相对于其它元素或父元素的位置,和线型布局结合起来,完成一些比较复杂的UI展示;

TableLayout 将子元素的位置分配到行或列中;

11、Android的数据存储形式。

SharedPeferences、文件存储、ContentProvider、SQLite数据库存储、网络存储

12、Sqlite的基本操作。

CRUD,三方greendao

13、Android中的MVC模式。

MVC:模型(model)-视图(view)-控制器(controller),比较MVP模式,剥离底层数据模型,业务模型,视图模型

14、Merge、ViewStub的作用。

ViewStub 是一个轻量级的View,没有尺寸也不会绘制任何东西到屏幕上去;

Merge:也可以添加可重用布局的文件,但因为最外层用来做包括,不要RelativeLayout、LinearLayout来做父节点,而真实Inflate的时候,是不可见的,它里面的节点直接嵌入layout当中,所以这可以减少节点的层级,降低layout的复杂度,优化性能。

15、Json有什么优劣势。

xml与json,比对,json解析和后台使用场景更多,json解析对三方的依赖更少;

16、动画有哪两类,各有什么特点?

动画模式,

-Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;

-Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

17、Handler、Loop消息队列模型,各部分的作用。

消息队列(Message Queue)和消息循环(Looper),Looper.prepare()来创建创建消息队列,Message Queue用来存放Message对象的数据结构,按照“先进先出”的原则存放消息。

18、怎样退出终止App。

System.exit();

通过队列添加Activity,退出时统一弹栈

通过一个Activity管理Fragment,退出时只需结束该Activity

19、Asset目录与res目录的区别。

assets目录下的资源文件不会在R.java自动生成ID,所以读取assets目录下的文件必须指定文件的路径

20、Android怎么加速启动Activity。

在交互上,可以通过展示延迟View来优化用户体验,特别是App打开的时候,最好有一个启动View来替换系统默认的白屏

延迟数据加载,在启动前,不加载数据,当启动View准备好时,开始加载首页要展示的ui,同时再延迟加载服务端数据

21、Android内存优化方法:ListView优化,及时关闭资源,图片缓存等等。

优化资源和图片缓存可以使用成熟的三方库,例如图片缓存ORM(ImageViewLoader),ListView三方(in.srain.cube:ultra-ptr);

22、Android中弱引用与软引用的应用场景。

强引用,例如:Object object=new Object();那object就是一个强引用了。

软引用是用来描述一些有用但并不是必需的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。

弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。在java中,用java.lang.ref.WeakReference类来表示。

虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期。在java中用java.lang.ref.PhantomReference类表示。

23、Bitmap的四中属性,与每种属性队形的大小。

24、View与View Group分类。自定义View过程:onMeasure()、onLayout()、onDraw()。

25、Touch事件分发机制。

dispatchTouchEvent -> onInterceptTouchEvent -> onTouchEvent

26、Android长连接,怎么处理心跳机制。

27、Zygote的启动过程。

28、Android IPC:Binder原理。

29、你用过什么框架,是否看过源码,是否知道底层原理。

30、Android5.0、6.0新特性。

31、Android四大组件

Activity、Service、Broadcast Receiver、Content Provider

闲时总结一下平时使用的widget_util、date_util等,上传到自己的github,开发中特色ui展示可以作为特色开源项目,作为加分项,逛逛名人的博客,了解android底层framework。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: