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

网站跳出率高不要营业执照的做网站

网站跳出率高,不要营业执照的做网站,域名购买方法,做网站按页面收费mvc MVC 架构中,Activity/Fragment(作为 View 和 Controller)直接持有 Model 或异步任务的引用,当页面销毁时,这些长生命周期对象若未正确释放,会导致 Activity 无法被 GC 回收,形成内存泄漏。…

mvc

MVC 架构中,Activity/Fragment(作为 View 和 Controller)直接持有 Model 或异步任务的引用,当页面销毁时,这些长生命周期对象若未正确释放,会导致 Activity 无法被 GC 回收,形成内存泄漏。

举例:

在activity中创建一个线程执行下载任务,该线程为内部类会持有activity类的强引用,如果下载过程中,用户关闭下载页面,该activity销毁但是下载任务未结束,该activity无法回收

// MVC模式下的Activity(同时作为View和Controller)
public class HomeActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_home);// 错误示例:AsyncTask内部类隐式持有Activity引用new DownloadTask().execute("url");}// 内部类会隐式持有外部类(Activity)的强引用private class DownloadTask extends AsyncTask<String, Void, byte[]> {@Overrideprotected byte[] doInBackground(String... params) {// 网络请求,耗时操作return downloadData(params[0]);}@Overrideprotected void onPostExecute(byte[] result) {// 更新UI(View层操作)TextView textView = findViewById(R.id.result_text);textView.setText("下载完成");}}// 页面销毁时,若AsyncTask未完成,Activity无法被回收@Overrideprotected void onDestroy() {super.onDestroy();// 未取消任务,泄漏风险}
}

mvp

**对比mvc:

把原来的UI逻辑抽象成View接口,把原来的业务逻辑抽象成Presenter接口,model还是原来的model

基本业务逻辑示例

在这里插入图片描述

示例

view: 定义展示的方法,依赖具体的activity实现

//顶层接口
public interface IBaseVeiw {void showErrorMesage(String msg);
}public interface IGoodsView extends IBaseVeiw{void showGoodView(List<Goods> goods);
}

model:存储和获取数据的逻辑,与view没有直接联系

//顶层接口
public interface IGoodsModel {void loadGoodsData(OnLoadlistener onLoadListener);interface OnLoadlistener{void onComplete(List<Goods> goods);void onError(String msg);}
}//业务相关具体实现类
public class GoodsModel implements IGoodsModel{@Overridepublic void loadGoodsData(OnLoadlistener onLoadListener) {onLoadListener.onComplete(getData());}//数据应来自真实情况(网络,数据库..  )private List<Goods> getData() {ArrayList data = new ArrayList<>();for(int i=0;i<10;i++){data.add(new Goods("商品"+i,i));}return data;}}

presenter:获取view和model,将model的获取的数据用view的方法显示

在presenter中创建view的弱引用,并创建对应的绑定解绑方法在activity的生命周期调用进行绑定和解绑

public class GoodsPresenter<T extends IBaseVeiw>  {//IGoodsView iGoodsView;public WeakReference<T> iGoodsView;IGoodsModel iGoodsModel = new GoodsModel();/*绑定*/public void attachView(T view){iGoodsView = new WeakReference<>(view);}/*解除绑定*/public void deatchView(){if(iGoodsView!=null){iGoodsView.clear();iGoodsView = null;}}public void  fetch(){if(iGoodsView.get()!=null&&iGoodsModel!=null){iGoodsModel.loadGoodsData(new IGoodsModel.OnLoadlistener() {@Overridepublic void onComplete(List<Goods> goods) {((IGoodsView)iGoodsView.get()).showGoodView(goods);}@Overridepublic void onError(String msg) {}});}}
}

在activity中使用presenter,只关心两件事,数据从哪里来,表示层选择什么

public class MainActivity extends AppCompatActivity implements IGoodsView {private ActivityMainBinding binding;private MainAdapter mainAdapter;private GoodsPresenter goodsPresenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding = ActivityMainBinding.inflate(getLayoutInflater());setContentView(binding.getRoot());mainAdapter = new MainAdapter(R.layout.item_book);goodsPresenter = new GoodsPresenter();//使用弱引用goodsPresenter.attachView(this);goodsPresenter.fetch();}@Overridepublic void showErrorMesage(String msg) {}@Overridepublic void showGoodView(List<Goods> goods) {mainAdapter.setNewInstance(goods);binding.rec.setAdapter(mainAdapter);}@Overrideprotected void onDestroy() {super.onDestroy();goodsPresenter.deatchView();}
}

文章转载自:

http://iKGbcxWh.rzpkt.cn
http://K4nTed3L.rzpkt.cn
http://FA5lQJDB.rzpkt.cn
http://N34C2yaE.rzpkt.cn
http://BJ4PPyUB.rzpkt.cn
http://fhiWfunQ.rzpkt.cn
http://4o6T3Y0Z.rzpkt.cn
http://MFxlA4qR.rzpkt.cn
http://uZY89ZYH.rzpkt.cn
http://Z8Ir7Qp9.rzpkt.cn
http://pGfUtcWx.rzpkt.cn
http://HN8f1gIe.rzpkt.cn
http://OP6c1Ls7.rzpkt.cn
http://6oHedZrI.rzpkt.cn
http://Rpm1HPR5.rzpkt.cn
http://eHX7C4wy.rzpkt.cn
http://Jc8pMCvq.rzpkt.cn
http://2pzToNfX.rzpkt.cn
http://eSWD2ctc.rzpkt.cn
http://MY75iM66.rzpkt.cn
http://026OziNZ.rzpkt.cn
http://g7HXeYiS.rzpkt.cn
http://wnACXDgn.rzpkt.cn
http://HN1vUhbc.rzpkt.cn
http://nEKAobLc.rzpkt.cn
http://HyKdd8iO.rzpkt.cn
http://yXgJzSnq.rzpkt.cn
http://khRnuPIp.rzpkt.cn
http://R6HB13gz.rzpkt.cn
http://fwIm0ifi.rzpkt.cn
http://www.dtcms.com/wzjs/718592.html

相关文章:

  • 给网站建设提意见推广平台使用
  • 圣诞节网站模板东莞网站制作功能
  • 什么网站需要服务器网络管理是什么
  • 门户网站建设方案目录高平网站优化公司
  • 网站建设招标无锡网络公司网站绪论
  • 网站百度不收录企业展厅建造方法
  • 网站建设程序制作工商局网站查询入口
  • 有什么好的网站做推广的汽车之家车报价大全
  • wordpress静态文件网站改版seo
  • 用jsp做的网站源代码下载上海企业网络专线
  • 唐山建站公司模板公众号平台登录
  • 无锡网站制作启想做农村电商怎么入手
  • 集约化网站建设的函北京公司模板网站
  • 做网站要找什么公司苏州新区建网站
  • 上海展览设计制作公司做搜狗pc网站优化排
  • 网站优化自已做还是请人做无锡网站维护公司
  • 做一个企业网站大概需要多少钱wordpress 用户 新增
  • wordpress资讯站模板百度网址大全下载安装
  • 万站网武安百度seo
  • wordpress多站点设置计算机网站php设计代做
  • 网站开发 方案概要石碣企业网站建设公司
  • 哪些网站可以用来做百科参考淄博亿泰
  • 图跃网站建设互联网的意思
  • 建行网站会员注册用户名长沙经开区建设局网站
  • 装饰网站设计模板建设厅网站实名制系统如何解聘
  • 吴中seo网站优化软件中小企业网络营销的现状及对策研究
  • 百度行业网站怎么做做电子请帖的网站
  • 安庆公司做网站企业咨询管理有限公司
  • 文章类网站后台美橙互联建站
  • 深圳电子商务网站建设公司o2o网站建站