视图层(View)
一般采用XML文件进行界面的描述,这些XML可以理解为AndroidApp的View。使用的时候可以非常方便的引入,且便于后期界面的修改。逻辑中与界面对应的id不变化则代码不用修改,大大增强了代码的可维护性。
控制层(Controller)
Android的控制层的重任通常落在了众多的Activity的肩上。Android中的Actiivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。所以一般不在Activity中写耗时操作代码,要通过Activity交割Model业务逻辑层处理。
模型层(Model)
我们针对业务模型,建立的数据结构和相关的类,就可以理解为AndroidApp的Model,Model是与View无关,而与业务相关的。对数据库的操作、对网络等的操作都应该在Model里面处理,当然对业务计算等操作也是必须放在该层的。
各层内容
Android MVC小例子
下面来看一个简易的demo代码,它的功能是:点击屏幕上的刷新按键后,给出应用运行的时长。
代码
//Model层 public class TimeModel { private static final long START_TIME = System.currentTimeMillis(); public void update(ControllerActivity controllerActivity) { //更新数据 String timeText = Double.toString((System.currentTimeMillis() - START_TIME)/1000.0); //更新UI controllerActivity.setText(timeText); } } “http://schemas.android.com/apk/res/android” android:layout_width=“match_parent” android:layout_height=“match_parent” android:orientation=“vertical” android:gravity=“center”> android:id=“@+id/tv_show” android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:textSize=“30sp” android:text=“@string/time_text”/> android:id=“@+id/btn_update” android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:text=“@string/update_button”/> //Controller层 public class ControllerActivity extends Activity { private TimeModel timeModel; private TextView textView; private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_controller); timeModel = new TimeModel(); initView(); } public void initView() { textView = findViewById(R.id.tv_show); button = findViewById(R.id.btn_update); //接收来自View的事件 button.setOnClickListener(v -> {