Android架构设计——MVC,安卓面试题内存优化

控制层(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);

}

}

<LinearLayout xmlns:android=

“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical”

android:gravity=“center”>

<TextView

android:id="@+id/tv_show"

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:textSize=“30sp”

android:text="@string/time_text"/>

<Button

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 -> {

//通知Model处理数据

timeModel.update(ControllerActivity.this);

});

}

public void setText(String timeText){

String text = “应用已运行” + timeText + “秒”;

textView.setText(text);

}

}

运行结果

缺点

上述例子中各个组件的职责似乎挺符合MVC设计理念,但在实际的开发过程中我们发现并不是这样。

最后

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

最后文末放上一个福利:GitHub地址

PS:我GitHub中有大量高阶Android学习视频资料和面试资料包~

b/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

PS:我GitHub中有大量高阶Android学习视频资料和面试资料包~

欢迎大家一起交流讨论啊~

猜你喜欢

转载自blog.csdn.net/m0_66264630/article/details/122964387