mvp架构优化
MVP优化的结构
view的结构
- BaseView
public interface BaseView { void showLoading(); void hideLoading(); }
- NewMvpView
public interface NewMvpView extends BaseView { void setListItem(List<String> data); void showMessage(String message); }
presenter结构
- BasePresenter
public abstract class BasePresenter<T> { public T mView; public void attach(T mView){ this.mView = mView; } public void dettach(){ mView = null; } }
NewMvpPresenter
public class NewMvpPresenter extends BasePresenter<NewMvpView> { private RequestBiz requestBiz; private Handler mHandler; public NewMvpPresenter() { requestBiz = new RequestBiziml(); mHandler = new Handler(Looper.getMainLooper()); } public void onResume(){ requestBiz.requestForData(new OnRequestListener() { @Override public void onSuccess(final List<String> data) { mHandler.post(new Runnable() { @Override public void run() { mView.hideLoading(); mView.setListItem(data); } }); } @Override public void onFailed() { mView.showMessage("请求失败"); } }); } public void onItemClick(int position){ mView.showMessage("点击了item"+position); } }
activity结构
- BaseMvpActivity
public abstract class BaseMvpActivity<V,T extends BasePresenter<V>> extends AppCompatActivity { public T presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); presenter = initPresenter(); } @Override protected void onResume() { super.onResume(); presenter.attach((V)this); } @Override protected void onDestroy() { presenter.dettach(); super.onDestroy(); } public abstract T initPresenter(); }
- NewMvpActivity
public class NewMvpActivity extends BaseMvpActivity<NewMvpView,NewMvpPresenter> implements NewMvpView,AdapterView.OnItemClickListener{ private ListView mvpListView; private ProgressBar pb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mvp); mvpListView = (ListView)findViewById(R.id.mvp_listview); mvpListView.setOnItemClickListener(this); pb = (ProgressBar) findViewById(R.id.mvp_loading); } @Override protected void onResume() { super.onResume(); presenter.onResume(); } @Override public NewMvpPresenter initPresenter() { return new NewMvpPresenter(); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { presenter.onItemClick(position); } @Override public void setListItem(List<String> data) { ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data); mvpListView.setAdapter(adapter); } @Override public void showMessage(String message) { Toast.makeText(this,message,Toast.LENGTH_SHORT).show(); } @Override public void showLoading() { pb.setVisibility(View.VISIBLE); } @Override public void hideLoading() { pb.setVisibility(View.GONE); } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
复杂 SQL 查询跑不动?DRDS 只读实例来解决!
背景在实际业务生产环境中,业务应用系统在使用 OLTP 数据库将数据进行存储后,均会存在如后台运营类系统进行统计报表分析等场景的复杂 SQL 查询诉求。 为满足此类复杂 SQL 查询快速响应的需求,DRDS 团队基于第三代分布式SQL引擎,进一步引入自研 MPP 多机并行计算引擎(Fireworks)及对应的优化策略,极大地补强了 DRDS 的复杂查询处理能力。 千万级数据下的分布式多表Join、聚合、排序、子查询操作秒级返回结果,可极大的提升响应速度。自身利用同一份数据(RDS只读)进行处理,无需数据同步至其他数据源,降低业务架构整体链路复杂度,节省业务运维及预算成本。 主要特性自研 MPP 多机并行计算引擎 Fireworks DRDS 只读实例搭载了一个具备完整多机并行处理能力的 SQL 执行引擎(Fireworks)。它与 DRD
- 下一篇
【大数据】Uber的数据架构
三月份小编在美国参加MVP峰会的时候,有幸碰到了几个Uber的高级工程师,他们在当天还分享了Uber的消息总线系统如何在每日兆级信息量、PB级数据卷、数万个Topic的情况下,保证低延时(小于5ms),高可用(99.99%),高稳定(99.99%,核心客户100%)的。 有朋友对Uber这种打车软件公司能达到这样的数据量感到不以为然,认为只有社交类(如Facebook、领英,微信)和在线零售(如Ebay、亚马逊,淘宝)的公司才有这样的体量。其实上述的数据量只是Uber的单个数据副本,作为一家遍布全球超过400个城市的出行公司,Uber需要存储世界各地的地图数据;其次,它还需要对这些城市的交通状况做出精确分析,以便对任意时间的路面进行预测;最后,Uber内部还有分析师和数据科学家需要调阅每周的财务收支情况及用户反馈,以及时调整运营策略或调整路线算法。 总体来说,Uber的数据生产者分为两类,一是核心业务数据,包括: 乘客信息、司机信息 路程规划、账单 司机状态变更 订单、可用车辆、定价 以上数据对可用性、实时性要求非常高,因此存储在在线数据库(OLTP)中。 第二类数据是日志和事件数据。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境