学习Android 有一个很重要的设计思想就是——MVC设计模式。
应用对象按模型、控制器和视图的类别分为三部分。Android应用基于模型——控制器——视图(Model—View—Controller、MVC)的架构模式进行设计。
MVC设计模式表明,应用的任何对象,归根结底都属于模型对象、视图对象、以及控制对象中的一种。
模型对象:存储着应用的数据和业务逻辑。 视图对象知道如何在屏幕上绘制自己如何响应用户的输入,如用户的触摸等。 控制对象含有应用的逻辑单元,是视图与模型对象的联系纽带。
使用MVC设计模式的好处:
把java类以模型、视图和控制层进行分类组织,也有助于我们设计和理解应用。
额。。最近重新把android基础看了一遍。然后买了一本书叫做《Android编程指南》(第二版) .个人感觉此书还不错。今天写一下在书中联系的一个简单的程序。
我也是因为看了这本书之后更改了我自己的一些编译习惯。因为android的一个很中要的一个编译思想就是MVC模式,不管是你在给一个简单按钮Button定义它的名字也好,还是给一堆按钮定义它们的信息也好,都要想到这个编译思想。
当一个用户使用一个app时,当他进行点击一个按钮的时候,你要去响应这个点击时间,你要去给这个控件去写它的方法,而不是一个死板的按钮,是一个有生命力,有自己的构造方法的按钮。
下面我来画一个MVC数据控制流与用户交互的时候响应的数据流图:
额... 图虽然画的有点丑,但是大体的意思就是个样子了。
接下来来描述下Activity的生命周期.
每个Activity都有其生命周期,activity在运行、暂停和停止三种可能的状态间进行转换。
Activity的生命周期、状态以及状态切换时系统调用的方法有如下几种:
1.onPause()、onStop()、onDestory()、onCreate()、onStart()、onReasume()。
日志跟踪Activity的生命周期:
Android 的android.util.Log类能够发送日志信息到系统级别的共享日志中心。Log类中有好几个日志记录方法:
其中使用最多的是:
public static int d(String tag,String msg): ddaibiao "debug” ,用来表示日志信息的级别,第一个参数是表示日志的来源,第二个参数表示日志的具体内容。
第一个参数通常以类名为值的TAG常量传入
private static final String TAG="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate(Bundle) called");
setContentView(R.layout.activity_main);
}
小提示:@Override注解,就是要求编译器保证当前类具有你要覆盖的方法。
覆盖onSaveInstanceState(Bundle)方法, 可通过此方法将一些数据保存在bundle中,然后在onCreate()方法中取出这些数据。
当用户离开当前activity管理的用户界面,或Android需要回收内存时,acitivity也会被销毁,所以,为了用户的体验,Android 不会为了回收内存,而去销毁正在运行的activity。
activity只有在暂停或者停止状态下才可能会被销毁
在使用Android studio进行开发的时候,查看Log日志是非常重要的。
使用android.util类记录日志信息,不仅可以控制日志的内容,还可以用来控制信息重要程度的日志级别。 Android支持五种日志级别:
1.ERROR: Log.e(...) 说明:错误
2.WARNING: Log.w(...) 说明:警告
3.INFO : Log.i(..) 说明:信息型消息
4.DEBUG: Log.d(...) 说明:调试输出:可能被过滤掉
5.VERBOSE: Log.v(...) 说明:只用于开发..
在做开发的时候R文件是一个令人非常头疼的地方,当你不经意去删改R文件里面的一些东西,R文件就会报错,然后就导致你整个项目都会出错,所以处理R类的问题是非常重要的。
若当你资源编译错误有时出现一些莫名其妙错误的状况的时候,你不妨可以试试以下这几种方法:
1.重新检查资源文件中XML文件的有效性
2.清理项目
3.使用Gradle 同步项目
4.运行Android Lint