Android——基础(2)

学习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

时间: 2024-10-23 21:01:49

Android——基础(2)的相关文章

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

Android基础入门教程——2.3.12 Date & Time组件(下)

Android基础入门教程--2.3.12 Date & Time组件(下) 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来继续学习Android系统给我们提供的几个原生的Date & Time组件,他们分别是: DatePicker(日期选择器),TimePicker(时间选择器),CalendarView(日期视图),好吧, 其实一开始让我扣这几个玩意我是拒绝的,因为在我的印象里,他们是这样的: 简直把我丑哭了,有木有,终于知道为什么那么多人喜欢自定义这种类型的

Android基础入门教程——2.1 View与ViewGroup的概念

Android基础入门教程--2.1 View与ViewGroup的概念 标签(空格分隔): Android基础入门教程 本节引言: 告别了第一章,迎来第二章--Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突发奇想,直接翻译官方文档对 这两个东西的介绍吧,对了,天朝原因,google上不去,Android developer上不去,我们可以 改hosts或者用vpn代理,当然也可以像笔者一样使用国内的API

2015年最新Android基础入门教程目录(完结版)

2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:<2015最新Android基础入门教程>完结散花~ 下面是本系列教程的完整目录: 第一章:环境搭建与开发相关(已完结 10/10) Android基础入门教程--1.1 背景相关与系统架构

《2015最新Android基础入门教程》完结散花~

<2015最新Android基础入门教程>完结散花~ 标签(空格分隔): 反思小结 引言: 从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析-由于个人能力的局限, 虽然

Android基础入门教程——10.10 传感器专题(1)——相关介绍

Android基础入门教程--10.10 传感器专题(1)--相关介绍 标签(空格分隔): Android基础入门教程 1.传感器相关介绍: 说到传感器,相信大家都不会陌生吧,比如微信的摇一摇就用到了加速度传感器: 传感器的定义:一种物理设备或者生物器官,能够探测.感受外界的信号,物理条件(如光,热, 适度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官! 传感器的种类:可以从不同的角度对传感器进行划分,转换原理(传感器工作的基本物理或化学 效应):用途:输出信号以及制作材料和工艺

Android基础入门教程——8.3.16 Canvas API详解(Part 1)

Android基础入门教程--8.3.16 Canvas API详解(Part 1) 标签(空格分隔): Android基础入门教程 本节引言: 前面我们花了13小节详细地讲解了Android中Paint类大部分常用的API,本节开始我们来讲解 Canvas(画板)的一些常用API,我们在Android基础入门教程--8.3.1 三个绘图工具类详解 中已经列出了我们可供调用的一些方法,我们分下类: drawXxx方法族:以一定的坐标值在当前画图区域画图,另外图层会叠加, 即后面绘画的图层会覆盖前

Android基础入门教程——8.3.11 Paint API之—— ColorFilter(颜色过滤器)(3-3)

Android基础入门教程--8.3.11 Paint API之-- ColorFilter(颜色过滤器)(3-3) 标签(空格分隔): Android基础入门教程 本节引言: 嗯,本来说好今天不写的,还是写吧,毕竟难得空闲哈~,本节给大家带来的是 ColorFilter的第三个子类:PorterDuffColorFilter,看到PorterDuff大家一定不会 陌生吧,假如你看过前面的 Android基础入门教程--8.3.5 Paint API之-- Xfermode与PorterDuff