Android小知识

目录:

Android系统架构

Android应用开发特色

Project 介绍

项目运行过程

剖析 res 中的资源

如何使用这些资源?

详解 build.gradle  文件

Android 的日志工具  Log

Toast

Menu

Intent

活动的生命周期



Android系统架构

大致四层:Linux内核层、系统运行库存、应用框架层和应用层

Android应用开发特色

1.四大组件

活动    Activity

服务    Service

广播接收器    Broadcast Receiver

内容提供器    Content Provider

2.系统控件

3.SQLite 数据库

轻量级、运算速度快的嵌入式关系型数据库

4.多媒体

音乐、视频、录音、拍照、闹钟

5.定位

Project

1.  .gradle 和 .idea

AS自动生成的一些文件,暂不管

2.app

代码,资源都在这

3.build

编译时自动生成的文件

4.gradle

gradle wrapper 的配置文件

5.gitignore

用来将指定的目录或文件排版在版本控制之外的 (这两天没有在意)

6.build.gradle

项目全局的 gradle 构建脚本,通常不需要改

7.gradle.properties

全局的 gradle 配置文件,这里配置的属性会影响项目中所有的 gradle 编译脚本

8.gradlew 和 gradlew .bat

用来在命令行界面中执行 gradle 命令的,其前者是在 Linux或Mac系统中使用,后者Windows

9.HelloWorld.iml

哦~~

10. local.properties

哦~~

11.settings.gradle

哦~

所以,前面的都是废话,重点  是    2.app

1.build

编译时自动生成的文件

2.libs

如果项目中使用第三方 jar 包,就需将它放在此下,放这会被自动添加到构建路径里去(这个有用到,我在导入百度地图的LBS  Ctrl v 了)

3.androidTest

编写 Android Test 测试用例的,可以对项目进行一些自动化测试。(这两天没用到)

4.java

所有Java代码的放置地,默认  MainActivity (核心啊)

5.res

项目所用所有图片(drawable)、布局(layout)、字符串(values)等资源都在此

(布局用到过,添加过 button  TextView)

6.AndroidManifest.xml

整个Android项目的配置文件,四大组件都在这注册,添加权限声明

(加过权限和key)   (注意  M a n i fest ,之前还以为写错了)

7.test

编写 Unit Test 测试用例的,对项目进行自动化测试的另一种方式

8. .gitignore

9.app.iml

Intellij IDEA 项目自动生成的文件,

10.build.gradle

app 模块的 gradle 构建脚本,此文件会指定很多项目构建相关的配置(因为权限试着改过这里的编译环境等,然无卵用)

11.proguard-rules.pro

(竟然是此意,遇到过问题博客说加个代码在此,并无卵)

项目运行过程

打开  AndroidManifest.xml 

Android小知识_第1张图片

Android 程序设计讲究逻辑和视图分离,所以在布局文件中编写界面,然后在活动中引入。

剖析 res 中的资源

res 目录下:

drawable开头的文件夹            图片

mipmap开头的文件集             图标

values                                     字符串、样式、颜色

layout                                      布局文件

为啥要那么多 mipmap  那

Android小知识_第2张图片

如何使用这些资源?

例如打开   res/values/strings.xml  


不造为啥复制不过来~~~

两个方法引用它:

1.  代码中  R.string.hello_world  可以获得该字符串的引用

2.在 XML 中  @string/hello_world  可以获得该字符串的引用

(其中string 可换,图片 drawable、图标  mipmap、布局  layout,以此类推)

例如:

Android小知识_第3张图片

详解 build.gradle  文件

不知所云

HelloWorld 项目中有两个  build.gradle

Android小知识_第4张图片


Android小知识_第5张图片

我当前的是  2.2.3

Android小知识_第6张图片


compileSdkVersion  26    编译版本    26对应  Android 8.0 系统的 SDK 编译

buildToolsVersion "26.0.1"    构建工具的版本 

minSdkVersion 15    最低兼容的 Android 系统版本   15对应  4.0 的系统

targetSdkVersion 26   

Android小知识_第7张图片

!!!!就是这个东西把我坑的,简直了!!!!!

buildTypes


Android小知识_第8张图片

dependencies 闭包

可以指定项目所有的依赖关系,通常有三种依赖方式:

1.本地依赖(compile fileTree)    对本地Jar 包或目录添加依赖关系

2.库依赖(compile project)    项目中的库模块添加依赖关系

3.远程依赖(compile)    jcenter库上的开源项目添加依赖关系

Android 的日志工具  Log

****************************************

想起前两天:

我:彬哥,我程序闪退

彬哥:看下log,搜fatal

我:……黑人问号脸

***************************************

Log  (android.util.Log),此类提供5个方法来打印日志:

Android小知识_第9张图片

在setContentView(R.layout.activity_main); 下添加如下语句:

Log.d("MainActivity","onCreate execute");

logcat 即可看到如下信息:

08-25 02:26:17.668 2547-2547/com.example.yanchengwei.helloworld D/MainActivity: onCreate execute

为何使用 Log 而不用 System.out?

日志打印不可控制、打印时间无法确定、不能继续添加过滤器、日志没有级别区分

Toast

Android 系统提供的一种提醒方式,在程序中可以使用它将一些短小的信息通知给用户,此信息一段时间后自动消失,并且不会占用屏幕空间

******大概代码*************************

Button button1 = (Button) findViewById(R.id.button_1);

button1.setOnClickListener(newView.OnClickListener(){

    @Override

    public voidonClick(View v){

        Toast.makeText(FirstActivity.this,"You clicked Button 1",

                Toast.LENGTH_SHORT).show();

    }

});

*********************************

findViewById()  获取到在布局文件中定义的元素,传入R.id.button_1 ,来得到按钮的实例

Menu(P38)

Android小知识_第10张图片

销毁一个活动:

按下Back,或者 finish()

Intent

可以在活动之间穿梭,分为显式和隐式

1.使用显式 Intent

Android小知识_第11张图片

Android小知识_第12张图片

在 FirstActivity 活动基础上打开 SecondActivity ,通过startActivity() 方法来执行 Intent。

效果:FirstActivity 界面点击  按钮,跳转到了  ActivityTest

2.使用隐式 Intent

合适的活动,简单理解   可以响应我们这个隐式 Intent 的活动

Android小知识_第13张图片

活动的生命周期

号称深入理解就可以写出流程的程序,合理管理应用资源方面发挥的游刃有余,你的应用程序将会拥有更好的用户体验~~~很叼的样子

返回栈

Android小知识_第14张图片

Android小知识_第15张图片
返回栈工作示意图

活动状态

每个活动在其生命周期最多可能会有4种状态。

1.运行状态:一个活动位于返回栈栈顶时,即运行状态。

2.暂停状态:当活动非在栈顶,但仍然可见时,即进入暂停状态。并不是每个活动都会占满整个屏幕的,比如对话框形式的活动只会占屏幕中间部分区域。处于此态仍完全是存活的,系统也不愿去回收这种活动(因为可见,回收的东西都会在用户体验方面有不好的影响),只有内存极低的情况下,系统才会去考虑回收这种活动。

3.停止状态:


4.销毁状态:活动从返回栈中移除后就变成了销毁状态。系统会最倾向于回收这种状态的活动,从而保证手机的内存充足。

活动的生存期

Activity 类中定义了 7 个回调方法,覆盖了活动生命周期的每个环节

Android小知识_第16张图片

Android小知识_第17张图片
活动的生命周期


Android小知识_第18张图片


活动的启动模式

四种:standard、singleTop、singleTest、singleInstance

1.standard

Android小知识_第19张图片
Android小知识_第20张图片

2.singleTop

Android小知识_第21张图片
Android小知识_第22张图片

3.singleTest

Android小知识_第23张图片
Android小知识_第24张图片

4.singleInstance

最特殊最复杂~不同于以上三个,指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动。

Android小知识_第25张图片
Android小知识_第26张图片

活动的最佳实践





以上,未完


写在最后:

简单总结下这两天的进度,如果按照产出来看的话,几乎无进度~

这周开始做Android的小Demo,有点操之过急,下载的Demo也运行不起来,一直在折腾关于Android 6.0之后的动态权限问题,然后,,GPS现在还没有正确的显示出来,这就很尴尬了~

至于收获,知道了发布流程,电脑的SHI1值及如何获取key,有了个大概的认识。

马上开始具体的点学习,一边学习小的知识点,一遍尝试继续做Demo。


【一首歌 】【信仰-张信哲】

前些天现场听得,再次点开这首歌竟然有了不一样的感觉~

爱是一种信仰,龙瞎也是,HelloWorld 大概也是吧~

你可能感兴趣的:(Android小知识)