概述
[](()优点
===========================================================
-
上手快。新建工程的时候,Android已经分配了XML和Activity,这样直接对应View层和Controller层,我们只需要增加model模块处理好数据即可。
-
由于Controller层承担了较多的处理j界面展示和数据处理的功能,相对来说简化业务模块和功能模块的划分。
[](()缺点
===========================================================
-
View层以XML作为实现,其控制能力太弱,比如动态地更新View状态就不能通过View来实现;
-
Control层既负责处理UI更新,又负责处理业务,职责臃肿;
-
Control层未做到完全将View层和Model层隔离,因为View层可以直接访问Model层(如自定义View类),导致View层和Model层耦合性增强;
-
Control层负担太重,导致代码过多,后期开发、测试及维护困难;
[](()适用范围
=============================================================
App需求功能不多,版本迭代不频繁,需要段时间内完成。
[](()实例
===========================================================
View:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“match_parent” 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】
android:background=“@color/base_bg”>
<TextView
android:id=“@+id/tv_activity_mvc”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:textSize=“30sp”
android:layout_centerInParent=“true”/>
Controller:
public class MVCActivity extends BaseActivity {
RetrofitManager mRetrofitManager;
@BindView(R.id.tv_activity_mvc)
TextView mTextView;
@Override
protected int getContentViewLayoutID() {
return R.layout.activity_architecture_mvc_activity;
}
@Override
protected void initViewsAndEvents(Bundle savedInstanceState) {
mTextView.setText(“I don’t do anything, but this is a MVC show anyway. Click me!”);
mRetrofitManager = new RetrofitManager();
}
@OnClick(R.id.tv_activity_mvc)
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv_activity_mvc:
mRetrofitManager.createApi(MyApplication.getInstance().getApplicationContext(), GankApis.class)
.getHistoryDate()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver<GankRes<List>>() {
@Override
public void onError(ApiException exception) {
LogUtil.e(TAG, “error:” + exception.getMessage());
}
@Override
public void onSuccess(GankRes<List> listGankRes) {
LogUtil.i(TAG, listGankRes.getResults().toString());
if (!MVCActivity.this.isFinishing() && !MVCActivity.this.isDestroyed()) {
mTextView.setText(“yes, I get it from net!”);
}
}
});
break;
}
}
}
Model
public class RetrofitManager {
private static final String TAG = “RetrofitManager”;
private static Retrofit singleton;
private static OkHttpClient okHttpClient = null;
private static String BASE_URL = “http://127.0.0.1”;
private void init() {
initOkHttp();
}
public RetrofitManager() {
init();
}
最后
以上就是阳光砖头为你收集整理的Android App开发架构之:MVC的全部内容,希望文章能够帮你解决Android App开发架构之:MVC所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复