Android面试宝典(1)----android的基础知识

慕课课程 --BAT大咖助力 全面升级Android面试】总结

1.activity

1)activity的4种状态

  running/paused/stopped/killed

2)activity的生命周期

3)进程优先级

前台/可见/服务/后台/空

2.activity启动模式

1)standard重新创建activity加到任务栈中

2)singletop(栈顶复用模式)

栈顶的activity复用,其他的重新创建。

3)singletask

检测任务栈中是否存在该activity,存在则将所有该acivity以上的activity都除去

4)singleInstance

比较少使用,任务栈中只有一个实例,activity独享任务栈

3.scheme跳转协议

4.Fragment

1)Fragment为什么被称为第5大组件

  使用多,Fragment可以灵活动态的加载到app中,有自己的生命周期。Fragment的生命周期不是完全独立的,必需嵌入activity中。

2)Fragment加载到activity的两种模式  a)静态,写到xml中  b)动态,实例化->add->commit

3)FragmentPagerAdpter与FragmentStatePagerAdapter的区别  FragmentPagerAdpter适用于页面较少,FragmentStatePagerAdapter适用于页面较多(destroyItem中释放了内存)。

4)Fragment生命周期

5)Fragment通信

  a)在fragment中调用acitivity的方法

    getActivity()

  b)在activity中调用fragment的方法

    接口回调(在fragment中创建接口,在activity中实现)

  c)在Fragment中调用Fragment的方法

    findFragmentById()

6)Fragment的replace,add,remove方法

  replace是将最上层的替换,add是直接加到最上层。

5.service

1)service是什么?和Thread的区别?

  是一种可以在后台执行长时间运行操作(不可执行耗时操作)而没有用户界面的应用组件。

  thread是程序的最小单元,thread的运行是独立的,可以耗时操作,而service是运行在主线程中。

2)service启动方式

  a)startservice

    定义一个service->注册->startservice->stopservice

  b)bindservice

    创建bindservice服务端,继承自service并在类中,常见一个Binder接口实例对象并提供方法给客户端调用

    从onBind()回调方法中返回此Binder实例

    在客户端中,从onServiceConnected()回调方法接收Binder,并使用提供方法调用绑定服务。

  replace是将最上层的替换,add是直接加到最上层。

6.broadcast

 1)广播应用场景

  同一app具有多个进程的不同组件之间的消息通信

  不同的app之间的组件之间消息通信

2)广播的分类

  普通广播/系统广播(有序广播)/本地广播(自身app内传播)

3)内部实现机制

  a)自定义广播接受者,并复写onRecvice

  b)通过Binder机制向AMS(activity manager service)进行注册

  c)广播发送者通过Binder机制向AMS发送广播

  d)AMS查找符合相应条件(IntentFliter/Permission等)的广播接收者,将广播发送到广播接受者相应的消息循环队列中

  e)消息循环执行拿到广播,回调onReceive()方法

4)LocalBroadcastManager

  a)使用它发生的广播将只在自身APP内传播,因此不用担心数据泄漏

  b)比系统的全局广播更加高效

  c)其他APP无法对你的app发送该广播,因此不必担心安全漏洞。

7.Webview安全漏洞

1)webview常见问题

  a)远程攻击者可使用java Reflection API利用漏洞执行java对象方法

  b)webview在布局文件中的使用:webview写在其他容器中时

  c)jsbridge

  d)webviewClient.onPageFinished->webChormeClient.onProgressChanged

  e)后台耗电

  f)webview硬件加速导致页面渲染问题

2)关于webview内存泄漏问题

  a)独立进程,简单暴力,不过可能涉及到进程间通信

  b)动态添加webview,对传入的webview使用的context进行弱引用

7.binder

1)Binder通信机制

  Binder是指一种通信机制(跨进程)

  性能:比传统的socket更安全,高效

  客户端进程只不过持有一个代理对象引用,通过代理对象执行完成

2)aidl

  

  

  

  

  

  

  

  

原文地址:https://www.cnblogs.com/slothccc/p/8714443.html