MVC和四大组件的理解

Android MVC 模式
什么是MVC?
MVC是用来管理代码,分开代码结构,是代码的螯合度降低
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑
MVC 好处是什么?
降低耦合
方便版本迭代
代码复用高
M
务逻辑处理,比如数据库存取操作
网络操作
复杂的算法
耗时的任务等都在model层处理
V
应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果
C
Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层的数据(eg.读取当前EditText控件的数据),控制用户输入(eg.EditText控件数据的输入),并向Model发送数据请求(eg.发起网络请求等)。
对Activity的理解 
生命周期有7个分别是:
onCreate: 创建视图,第一次创建一个Activity时调用
onStart: 启动视图,Activity创建或者从后台重新回到前台时被调用
onResume: 获取焦点,Activity获取焦点,界面可用时被调用
onPause: 失去焦点,Activity界面失去焦点,界面不可用被调用
onStop: 停止视图,退出当前Activity或者跳转到新Activity时被调用
onDestroy: 销毁视图,退出当前Activity时被调用,调用之后Activity就结束了
onRestart: 重启视图,Activity从后台重新回到前台时被调用
生命周期的种类
完整生命周期:Entire Lifetime
onCreate --> onStart --> onResume --> onPause --> onStop --> onDestroy


可视生命周期:Visible Lifetime
如果界面已经不可见 执行了onstop,没有执行ondestroy,下次开启的时候的会调用onRestart()
onRestart-->onStart --> onResume --> onPause --> onStop


前台生命周期:Foreground Lifetime
onResume --> onPause     


activity的四种加载模式:
standard是默认模式,可以不用配置,每次调用都会创建新的实例,允许 多个相同的activity进行叠加。
singleTop可以有多个实例,但是不允许多个activity叠加,如果Activity在栈顶+的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法
singleTask:若当任务栈里有这个Activity实例时,该Activity就不会被重新创建,从而复用这个已经存在的activity实例,并且把该Activity任务栈上面的所有的Activity进行清空。
singleinstance会运行在自己的新的单独的任务栈里面,并且只有单一的一个实例存在。
对Service 的理解
启动方式startService()普通开启:
优点:可以长期驻留后台
缺点:不可调用服务中的方法
普通服务的生命周期:
创建服务------->开启服务---------------->关闭服务
onCreate(); onStartCommand(); onDestroy():
onCreate()方法只会被执行一次。


绑定开启:
优点:可以调用服务中的方法
缺点:生命周期较短,随着Activity的销毁而销毁
绑定开启的服务 随着Activity的销毁而销毁,所以在实际的编程中,我们一般将在 Activity销毁方法中对 服务进行解绑,并停止。
普通服务的生命周期:
创建服务------->开启服务------->解绑服务------->关闭服务
onCreate(); onBind(); onUnbind(): onDestroy();
onCreate方法只会执行一次。
绑定启动: 
我们可以将我们所想调用的服务方法,全部抽象为接口中的抽象类,从而可以达到
接口回调的功能。
1. 解绑服务
unbindService(conn);
2. 停止服务
stopService(service);


混合开启服务
混合开启生命周期;
创建服务 普通启动方法 绑定启动方法 解绑服务
onCreate onStartCommand() onBind() onStartCommand(已经开启的情况) onUnbind()


对BroadcastReceiver 的理解
广播分为四个:
广播的分发类型:
无序广播 Normalbroadcasts:
优点:消息传递的效率较高
缺点:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播



有序广播 Ordered broadcasts:


优点:每个接收者可以选择 终止该广播,并且前面的接收者可以将处理结果存入广播中,传递下去。
缺点:消息传递的效率较低
广播的注册方式:
静态注册:就是在AndroidManifest.xml清单文件中进行定义,并且注册的广播接收器必须继承BroadcastReceiver类。
静态注册是当程序关闭后,如果有广播发过来,还能启动程序,类似于在系统后台保留一段程序。
优点:就是无需担心广播接收器是否是关闭状态,只要Android设备处于开启状态,广播接收器就能够接收到。
动态注册:就是在程序中使用Context.registerReceiver注册。
动态注册的生命周期跟程序的生命周期是一样的,程序关闭后动态注册的广播是不能再接收到广播的。
优点:在Android的广播机制中,动态注册的优先级高于静态注册的优先级,因此在必要情况下,我们需要动态注册广播接收器。




对ContentProvider的理解 
一个应用实现ContentProvider来提供内容给别的应用来操作,


  一个应用通过ContentResolver来操作别的应用数据,当然在自己的应用中也可以
主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。ContentProvider分为系统的和自定义的,系统的也就是例如联系人,图片等数据。
ContentProvider可以指定需要共享的数据,而其他应用程序则可以在不知道数据来源、路径的情况下,对共享数据进行增删改查等操作。
对Handler 的理解 
在安卓中有四大组件他们都运行在主线程中,谷歌规定安卓不能子主线程不能做耗时操作,否则会造成ANR异常,为了避免这种情况出现,必须开线程处理耗时操作,但是安卓规定子线程不能更新UI,所以安卓引入了handler机制,来实现UI的更改。
Handler主要是用于线程间的通信,一个handler允许发送和处理Message和Runable对象,UI主线程会自动分配一个Looper(消息轮询器),每个Looper中封装着MessageQueue(消息队列),遵循先进先出的原则,Looper负责不断的从自己的消息队列里去除对头的任务或消息执行,一般是在子线程执行玩耗时操作之后,通过Handler的sendMessage或post方法将Message和Runable对象传递个MessageQueue,而且在这些对象离开MessageQueue时,handler负责执行他们。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值