知识树杂谈Android面试(3)

一、Activity生命周期?

  a. Activity四种状态?

     Running、Paused(透明无焦点)、Stopped、killed.

  b. OnStart() OnRusume区分?

      是否可以交互.

  c. onSaveInstanceState/onRestoreInstanceState?

      被系统回收是随机调用.

二、 Activity启动方式?

    任务栈/容器栈: 

    1.一个应用程序一般都是由多个activity组成的。
    2.任务栈(task stack)(别名back stack后退栈) 记录存放用户开启的activity的。
    3.一个应用程序一被开启系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。
    4.任务栈的id是一个integer的数据类型 自增长的。
    5.在android操作系统里面会存在多个任务栈,一个应用程序一个任务栈。
    6.桌面应用和一般的应用程序是一样的,任务栈的行为也是一样。
    7.默认情况下, 关闭掉一个应用程序,清空了这个应用程序的任务栈。应用程序的进程还会保留。

   a. 四种方式

      standard: 多次创建相同Acitvity.

      singleTop: 栈顶不允许叠加打开多个相同acitvity,仅调用OnNewIntent方法.

      singleTask:  只存在一个实例。不存在,创建;存在,销毁该acitvity上面所以activity,然后调用OnNewIntent方法。

                       如果是在别的应用程序中启动它,则会新建一个task(任务栈),并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。

      singleInstance: 单一实例,单独容器展中存储。

 三、Service生命周期?

    

 四、如何理解Activity、View、Windows关系?

  这个问题真的很不好回答。所以这里先来个算是比较恰当的比喻来形容下它们的关系吧。Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图)LayoutInflater像剪刀,Xml配置像窗花图纸。
1:Activity构造的时候会初始化一个Window,准确的说是PhoneWindow。
2:这个PhoneWindow有一个“ViewRoot”,这个“ViewRoot”是一个View或者说ViewGroup,是最初始的根视图。
3:“ViewRoot”通过addView方法来一个个的添加View。比如TextView,Button等
4:这些View的事件监听,是由WindowManagerService来接受消息,并且回调Activity函数。比如onClickListener,onKeyDown等。

五、View的绘制流程?

   onMeasuer() -> onLayout() -> onDraw()

    计算大小  ->   确定位置 -> 开始绘制   

    http://blog.csdn.net/yanbober/article/details/46128379/

 六、Touch事件的传递机制?

      1. 所有的Touch事件都封装到MotionEvent里面
      2. 事件处理包括三种情况
        a) 传递—-dispatchTouchEvent()函数 
        b)  拦截——onInterceptTouchEvent()函数 
        c) 消费—-onTouchEvent()函数 

     

            http://blog.csdn.net/a_long_/article/details/52124606

    七、Android的几种动画?

      曾被问到Android中有几种动画,这个问题也好难回答。Android3.0之前有2种,3.0后有3种。
FrameAnimation(逐帧动画):将多张图片组合起来进行播放,类似于早期电影的工作原理,很多App的loading是采用这种方式。
TweenAnimation(补间动画):是对某个View进行一系列的动画的操作,包括淡入淡出(Alpha),缩放(Scale),平移(Translate),旋转(Rotate)四种模式。
PropertyAnimation(属性动画):属性动画不再仅仅是一种视觉效果了,而是一种不断地对值进行操作的机制,并将值赋到指定对象的指定属性上,可以是任意对象的任意属性。
http://blog.csdn.net/yanbober/article/details/46481171

 八、Android 跨进程访问方式?

  1. 访问其他应用的Acitvity

     打电话:

                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:1860095****"));
                startActivity(Intent.createChooser(intent, null));

   2. Content Provider

     访问系统相册

   3. 广播(broadcast)      

     如何显示系统时间

    4. AIDL服务

9:AIDL理解

http://bbs.51cto.com/thread-1086040-1.html

10:Handler的原理

http://blog.csdn.net/lmj623565791/article/details/38377229

11:Binder机制原理

http://blog.csdn.net/boyupeng/article/details/47011383

12:热修复的原理

1:JavaSisst
2:AspectJ
3:Xposef
这里给出Xposef方案
http://mp.weixin.qq.com/s?__biz=MzA3Mjk1MjA4Nw==&mid=400452659&idx=1&sn=841b49b875ec3b307f261ed52a7d9c4e&scene=23&srcid=1119JWRt0adNwGxTHiyok460#rd

13:设计一套图片异步加载缓存方案

http://www.cnblogs.com/zyw-205520/p/4997863.html
http://blog.csdn.net/boyupeng/article/details/47127605

14:Android内存泄露及管理

http://gold.xitu.io/entry/56d64b9e816dfa005943a55c

15:Activity与Fragment通信

http://gold.xitu.io/entry/56a87b2b2e958a0051906227

16:Fragment的那些坑

http://www.jianshu.com/p/d9143a92ad94
http://www.jianshu.com/p/fd71d65f0ec6
http://www.jianshu.com/p/38f7994faa6b

16:Android UI适配

这里给出hongyang大神的方案
http://blog.csdn.net/lmj623565791/article/details/45460089

17:布局优化

http://www.jianshu.com/p/145fc61011cd

18:Http Https

http://www.jianshu.com/p/93fdebe5fef1

19:网络请求优化

http://www.jianshu.com/p/3141d4e46240

20:数据库优化

http://www.jianshu.com/p/3b4452fc1bbd

21:图片优化

http://www.jianshu.com/p/5bb8c01e2bc7

22:HybridJAVA 与JS交互

http://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/

23:单例

http://www.jianshu.com/p/a956024629cb

24:Java GC原理

http://www.jianshu.com/p/d75a32ac5bed?

25:ANR

http://www.jianshu.com/p/124f3b75e164

26:Volley

http://www.jianshu.com/p/9e17727f31a1

27:JAVA注解反射原理

http://www.jianshu.com/p/3968ffabdf9d

28:算法

http://www.jianshu.com/p/ae97c3ceea8d

29:设计模式

http://gold.xitu.io/entry/56ebb4ad5bbb50004c440972

30:RxJava

http://gank.io/post/560e15be2dca930e00da1083?from=timeline&isappinstalled=0#toc_1


 

 
 

posted on 2017-10-08 12:27  齊帥  阅读(140)  评论(0编辑  收藏  举报

导航