以下知识点是复习的时候做下的点,简略复习
1、四大组件
activity(活动)用于表现功能
service(服务)后台运行服务,不提供界面呈现
Broadcast Receive(广播接收) 用于接收广播
Content Provider(内容提供者)支持多个应用中存储和读取数据,相当于数据库
2、生命周期
OnCreat - OnStart - OnResume - ActivityRunning -a other Activity comes in fornt of the Activity - OnPause - the activity is no longer visible - OnStop - OnDestroy - Activity is shut down
3、Activity的四种状态
running paused stopped killed
running属于处于响应操作状态,activity处于栈顶
pasued 是该activity失去焦点时或者被非全屏的或者透明的activity覆盖,但所有内存信息 和成员变量都存在(内存紧张的时候会收回)
stopped是该activity被其他activity完全覆盖,区别pasued就是该activity是否可见
killed是该activity已经被系统收回,所有成员变量和信息都不存在了
4、activity启动模式
standard:每启动一次activity都会创建一个实例、
singleTop:栈顶复用,如果待启动的activity在栈顶,则不会走onCreate onStart,而是
onPause->onNewIntent->onResume
singleTask:栈内复用,启动的Activity在指定的taskAffinity的task栈中存在相应的实例,则会把它上面的Activity出栈,直到当前Activity实例位于栈顶,执行onNewIntent。若指定的task不存在,则创建。如果存在则移到前台。应用场景:应用的主界面。
singleInstance:单一实例模式,整个手机操作系统里只有一个activity实例,且该task内只有该activity,如果实例存在,执行onNewIntent。应用场景:闹钟,浏览器,电话
5、scheme跳转协议
Android中的Scheme是一种页面跳转协议,和网站通过URL的形式访问一样,APP同样可以通过这种方式进行跳转,它可以很方便的满足我们在一些场景中的需求:
当应用接收到Push,点击通知栏消息跳转到特定页面,比如商品详情等。
通过服务器下发的跳转路径,客户端可以根据路径跳转相应页面。
应用跳转到其他APP指定页面。
H5页面点击锚点,APP端跳转具体页面。
6、Service启动方式
startService和bingService区别:
startService特点是:一旦服务开启跟调用者(开启者)就没有关系了,无论是开启者退出还是挂了,服务都在后台长期运行,开启者不能调用服务里面的方法。停止服务使用stopService
bindService特点是:bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。绑定者可以调用服务里的方法。绑定服务不会调用onStart()或者onStartCommand()方法。停止服务使用unbindService
startService同时也bindService启动的服务:停止服务应同时使用stopService与unbindService
7、Service和Thread的区别
服务不是单一的进程。服务没有自己的进程,应用程序可以不同,服务运行在相同的进程中
服务不是线程。可以在线程中工作。
8、Broadcast相关
a、本地广播:发送的广播事件不被其他应用程序获取,也不能响应其他应用程序发送的广播事件。本地广播只能被动态注册,不能静态注册。动态注册或方法时需要用到LocalBroadcastManager。
b、全局广播:发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册。
9、ContentProvider
ContentProvider的作用是为不同的应用之间数据共享,提供统一的接口
10、fragment
优势点:模块化,可重用,可适配
传参setArguments(Bundel bundle) 原因是内存紧张的时候可以保留原有数据,当然也可以创建的时候带上构造函数的方法传入
在fragment的onAttach()中getArguments()获得传进来的参数,并在之后使用这些参数。
添加方法有静态添加和动态添加
onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。
onCreate():Fragment被创建时调用。
onCreateView():创建Fragment的布局。
onActivityCreated():当Activity完成onCreate()时调用。
onStart():当Fragment可见时调用。
onResume():当Fragment可见且可交互时调用。
onPause():当Fragment不可交互但可见时调用。
onStop():当Fragment不可见时调用。
onDestroyView():当Fragment的UI从视图结构中移除时调用。
onDestroy():销毁Fragment时调用。
onDetach():当Fragment和Activity解除关联时调用。
当需要加载的页面较少且每个页面的数据相对变化较少的时候应当使用FragmentPagerAdapter
当需要加载的页面较多,并且每个页面的数据量比较大或者数据经常变化,占用内存较多的时候的时候应当使用FragmentStatePagerAdapter
11、webview的部分坑
webview密码明文保存漏洞
setPassword(false)来禁止保存密码
webview组件忽略ssl证书验证错误漏洞
1、非浏览器app,有条件的可以申请正式的ca证书,没条件的可以在客户端中添加证书,切勿新人所有证书或者忽略ssl证书认证错误
2、浏览器app,严格按照客户端校验服务器证书流程处理
a、客户端需要检查证书是否过期
b、证书签发的CA是否可靠
c、CA的公钥能否正确解开服务器证书的CA数字签名,对证书的签名值的有效性做验证
d、服务器证书上的域名是否和服务器的实际域名相匹配
webview播放器声音问题
先移除,再销毁
等等其他