Android编程权威指南--GeoQuiz笔记及拓展

Android编译过程

  1. 资源打包工具aapt(Android Asset Packaging Tool)将布局文件资源编译压缩紧凑后,打包到.apk文件中
  2. .java–>.class–>.dex
  3. 创建并且签署apk

Android构建工具

构建工具及功能: Ant,Maven传统构建工具,Gradle新一代构建工具. 具有编译,运行,签名,打包,依赖管理等功能.

依赖管理:依赖第三方jar包,并对其进行管理,Gradle引用第三方库方式为

compile ‘com.android.support:support-v4:24.0.1’

可以看到源地址,升级的时候直接改版本号就可以.而Ant和Maven管理起来相对麻烦

什么是Gradle:
Gradle是新一代自动化构建工具,是独立的项目,和As和Android无关,Ant和Maven这类构建工具是基于xml来进行描述的,很臃肿,而Gradle采用的是一种Groovy的语言,语法和java很像,Gradle完全兼容Maven,主要以java应用为主,还支持Android,C,C++.

Gradle与AndroidStudio的关系
AS上能用Gradle完全是因为Android Gradle Plugin插件,根目录有个build.gradle文件里面有这么一句话

class ‘com.android.tools.build:gradle:2.1.2’

这个就是依赖gradle的代码,后面的版本号代表的是android gradle plugin 的版本,而不是Gradle的版本,这个是Google定的,和Gradle官方没关系

Gradle Wrapper
新建一个项目,然后点击AS运行,默认就会帮你安装Gradle,我们不需要额外安装Gradle了,但是其实这个Gradle不是真的Gradle,他叫Gradle Wrapper,意为Gradle的包装.就是他在你每个项目都配置了一个指定版本的Gradle,你可以理解为每个Android项目本地都有一个小型的Gradle,通过这个每个项目可以支持不同的Gradle版本来构建项目

如何正确导入下载的开源项目
1 检查compileSdkVersion,buildToolsVersion
2 检查gradle-wrapper,比如AS1.0的时候要求必须使用gradle1.x的版本,AS2.0的时候不支持gradle1.x
3.基本就能运行了,还有其他问题,可能就是环境和项目本身的问题了

Android与MVC模式

M:模型层对象存储着应用的数据和业务逻辑.模型对象不关心用户界面,它存在的唯一目的就是存储和管理应用数据.

V:视图对象知道如何在屏幕上绘制自己以及如何响应用户的输入,如用户的触摸等.

C:包含了应用的逻辑单元(程序逻辑),是视图与模型对象的关系纽带.控制对象被设计用来响应由视图对象触发的各类事件,此外还用来管理模型对象与视图层间的数据流动.

这里写图片描述

onSaveInstanceState(Bundle)

  • 用户主动finish的时候是不会调用的
  • 主要用于在Activity销毁时保存一些信息
  • Activity执行onPause方法时候,如果App设置的targetVersion大于android3.0则不会执行
  • Activity执行onStop方法时,onSaveInstanceState会调用
    下面五种情况会调用
    1. 当用户按下Home键时
    2. 长按Home键,选择运行其他的程序时
    3. 按下电源按键时
    4. 启动另一个新的activity
    5. 屏幕方向切换时

Activity和子Activity通信

  1. Activity中使用startActivityForResult启动子Activity
  2. 重写Activity中的onActivityResult
  3. 获得Activity中Intent的数据,使用getIntent
  4. 重写子Activity中的setResult,子Activity销毁时会调用此方法

零散知识点

  1. Oncreate方法调用setContentView方法时,使用LayoutInflater类实例化定义在布局文件中的每一个view对象
  2. android:drawablePadding = “4dp”
  3. Button 继承 TextView, ImageButton 继承 ImageView
  4. layout-land文件夹 水平模式, layout 默认竖直模式
  5. Bundle中存储和恢复数据只能是基本数据类型以及可以实现Serializable接口对象
  6. 模拟器开发者选项里面donot keep activities,不保留活动,(用户离开后即销毁每个活动)模拟后台杀死
  7. ActivityManager维护这一个非特定应用独享的回退栈,所有应用的activity都共享该回退栈,这也是将ActivityManager设计成操作系统级的activity管理器来负责启动应用activity的原因之一
  8. 两个常量Activity.RESULT_OK 和Activity.RESULT_CANCELED
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值