当前位置: 首页 > news >正文

帮别人做网站违法国内最好的危机公关公司

帮别人做网站违法,国内最好的危机公关公司,微信小程序注册后怎么登录,网页布局类型我们经常在 Android MVP 架构中的 Presenter 层做一些耗时操作#xff0c;比如请求网络数据#xff0c;然后根据请求后的结果刷新 View。但是#xff0c;如果按返回结束 Activity#xff0c;而 Presenter 依然在执行耗时操作。那么就有可能造成内存泄漏#xff0c;严重时甚…我们经常在 Android MVP 架构中的 Presenter 层做一些耗时操作比如请求网络数据然后根据请求后的结果刷新 View。但是如果按返回结束 Activity而 Presenter 依然在执行耗时操作。那么就有可能造成内存泄漏严重时甚至会造成程序崩溃。因为 Presenter 中的 View 已经变为 null。 为了解决这个问题需要将 Activity 的某些生命周期方法与 Presenter 保持一致。 Lifecycle 绑定 presenter 生命周期 Lifecycle 的使用很简单Activity 通过继承 AppCompatActivity 会自动继承来自父类 ComponentActivity 的方法 getLifeCycle。具体如下 onStateChanged 方法会在 Activity 的生命周期发生变化时被触发比如当我们打开 LoginActivity 时就会显示如下日志 当中 LoginActivity 界面按下返回键则打印如下内容 Lifecycle 还提供了注解的方式使用因此我们可以很容易创建一个接口 IPresenter。在这个接口中声明对各种 Activity 声明周期的回调如下所示 上图中 IPresenter 接口通过注解的方式将 Activity 的声明周期绑定到相应的方法上。我们只需要在 BsetPresenter 中实现上述方法并在方法中数据绑定与取消的操作即可具体如下 注意上图中代码存在一些问题使用了 Android 中的 Log 来打印日志信息。严格来说在 Presenter 层应该禁止出现任何 Android 中的类。这里为了快速演示效果所以直接使用 Log 打印日志。 接下来修改 LoginActivity将 BasePresenter 注册到 LifeCycle 中即可如下代码所示 从新打开 LoginActivity显示日志如下 关闭 LoginActivity显示日志如下 可以看出当 Activity 执行 onDestory() 时BasePresenter 的 onDestory() 方法也会被执行。 在 LoginActivity 方法中有 login() 方法此方法会执行 BasePresenter 中的 login() 方法。如下代码 在 BasePresenter 中的 login() 方法中模拟执行了一段耗时操作。如果在 Activity onDestory() 时BasePresenter 还没有处理完耗时操作则会造成内存泄漏。  解决办法就是在 BasePresenter 的 onDestory 方法中停止正在执行的耗时操作。如下所示 合理使用 Presenter 生命周期 并不是所有的 Activity 的生命周期都需要通知 Presenter。举个例子假如我们需求是根据 GPS 定位展示用户的位置。但是为了节省电量有可能会在灭屏之后解绑定 GPS 定位的接收事件。 如果使用 MVP 架构需要有一个 TrackingActivity 实现 MVP 的接口 TrackingView并在生命周期方法中调用 presenter 的相应方法。如下所示 TrackingPresenter 是 presenter 层的实现内部实现了 GPS 定位的监听事件并分别在 resume 和 stop 方法中绑定和解绑定 GPS。如下 上述写法是常规的 MVP 写法但是存在两个问题1GpsTracker 实际的控制周期是跟 Activity 有关的因为亮屏和灭屏事件是在 Activity 中接收的。中间多了一层 Presenter 层其实是多余的2从重构的角度看TrackingPresenter 其实违反了职责单一原则Single Responsibility。因为 Presenter 层的主要作用是用来刷新 View但是上述代码中的 TrackingPresenter 还负责对 GpsTracker 进行管理。 这种情况下我们可以将 GpsTracker 初始化在 Activity 中将 GpsTracker 的绑定与解绑定都在 Activity 中管理最后将 GpsTracker 传给 TrackingPresenter 执行业务上的逻辑。具体实现如下 TrackingActivity 中对 tracker 进行管理并且根据 Presenter 层的逻辑处理回调 showCurrentPosition() 方法。 TrackingPresenter  TrackingPresenter 只负责对 Gps 事件的监听并根据结果刷新 View。这样 View 层和 Presenter 层的职责单一原则就完咋。在完成实际需求的前提下也丝毫不影响 Presenter 层的单元测试 当然并没有绝对正确或错误的架构说到底代码具体要怎样写、功能具体应该怎样实现最终还是要看实际业务场景。 总结 主要对 MVP 架构中 Presenter 层的使用做了2点优化介绍 1. 如何支持 Presenter 的生命周期使其在 Activity 被销毁时也能取消相应的耗时请求。 2. 合理使用 Presenter 的生命周期Activity 中所有的方法都委托给 Presenter 来处理是不合理的。这样会造成 Presenter 层极其庞大也难以维护有时也会违反职责单一原则。
http://www.w-s-a.com/news/760143/

相关文章:

  • 游戏网站后台建设郑州定制网站
  • 商务公司网站建设网站建设如何自学
  • 现在建网站可以拖拉式的吗中国国内最新新闻
  • phpstorm网站开发产品logo设计
  • 电子商务网站建设与运营什么是单页面网站
  • 西安优化网站公司南阳微信网站
  • 购物网站线下推广方案佛山快速建站哪家服务专业
  • 临沂网站排名外贸网站推广方法之一
  • 手机网站百度关键词排名查询吕梁网站制作吕梁安全
  • 做网站媒体wordpress管理员账号数据库添加
  • php如何自己做网站wordpress怎么修改编辑代码
  • 网站建网站建设公司WordPress互联
  • 泊头市网站建设价格wordpress导航菜单位置
  • 怎么设立网站赚广告费网页制作素材模板图片
  • 做班级网站的目的网站设计制作公司需要什么资质
  • 济南做网站哪家好财政网站平台建设不足
  • php网站建设招聘网站开发与设计论文
  • 上海 网站建设平台 补贴网站开发招标文件范本
  • 延安网站建设公司电话手机上那个网站做农产品推广比较好
  • 增城哪家网站建设好如何做网站实名认证
  • 常州地区做网站个人购物网站需要备案吗
  • 网站建设公司 跨界鱼科技专业做服务器的网站都有哪些
  • 欧洲网站服务器网站建设费用计入什么科目
  • 网站的色调苏州策划网站模板建站公司
  • 怎么看网站用的什么后台公路建设项目可行性研究报告编制办法哪个网站查最新版
  • 可以看的网站的浏览器有哪些专业APP客户端做网站
  • 如何做网站推广自己的产品推荐个网站好吗
  • 网站经营范围wordpress注入点
  • 学校网站开发协议夫妻网络网站建设
  • 福州网站seo推广优化微信商家小程序怎么弄