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 程序设计讲究逻辑和视图分离,所以在布局文件中编写界面,然后在活动中引入。

剖析 res 中的资源

res 目录下:

drawable开头的文件夹            图片

mipmap开头的文件集             图标

values                                     字符串、样式、颜色

layout                                      布局文件

为啥要那么多 mipmap  那

如何使用这些资源?

例如打开   res/values/strings.xml  


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

两个方法引用它:

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

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

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

例如:

详解 build.gradle  文件

不知所云

HelloWorld 项目中有两个  build.gradle


我当前的是  2.2.3


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

buildToolsVersion "26.0.1"    构建工具的版本 

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

targetSdkVersion 26   

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

buildTypes


dependencies 闭包

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

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

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

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

Android 的日志工具  Log

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

想起前两天:

我:彬哥,我程序闪退

彬哥:看下log,搜fatal

我:……黑人问号脸

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

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

在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)

销毁一个活动:

按下Back,或者 finish()

Intent

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

1.使用显式 Intent


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

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

2.使用隐式 Intent

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

活动的生命周期

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

返回栈


返回栈工作示意图

活动状态

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

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

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

3.停止状态:


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

活动的生存期

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


活动的生命周期




活动的启动模式

四种:standard、singleTop、singleTest、singleInstance

1.standard

2.singleTop

3.singleTest

4.singleInstance

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

活动的最佳实践





以上,未完


写在最后:

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

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

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

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


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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,423评论 25 707
  • Day1: 在代码中通过R.string.hello_world可以获得该字符串的引用; 在XML中通过@stri...
    冰凝雪国阅读 1,382评论 0 5
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,351评论 0 17
  • 不累,不博,不慌不忙,不安,不惧,不忧不愁,不哭不闹,不喊不痛,我们都勇敢面对美好的明天
    安静的雨阅读 201评论 0 0
  • 文/楚瑞丽 图片发自简书App 今天是2017年8月13日,因一直以来的一个良好习惯,从来不睡懒觉,可是又...
    _在远方阅读 620评论 6 3