Android基础(慧图小课堂)

课前准备:理解几个概念:编译、执行、类、初始化、api、签名(选择性)

一、什么是Android

很多人说,安卓开发是java开发的一个分支,但是我并不太认同这种观点。开发安卓并不一定要使用java语言,还可以使用kotlin,并且从jdk开始收费之后,使用kotlin的开发者会越来越多,谷歌也一直致力于在安卓中摆脱java。

Android是一种操作系统。构架如下:

Application层:开发者开发的app;

Framework层:用Java语言编写一些规范化的模块封装成为框架,提供api给Application层的开发者调用。另一方面,它包含了JNI(Java Native Interface:提供了若干的API实现了Java和其他语言的通信)的方法,根据函数表查询调用核心库层里的底层方法。

Native层:通过C和C++语言实现。常见一些本地服务和一些链接库等。

Linux Kernel层:这一层主要完成的是操作系统所具有的功能,比如这一层有许多的驱动程序,正是通过这些驱动程序来驱动我们设备上的硬件设备的。

我们学习Android主要学的就是Framework这一层。

二.简单了解Android apk的编译打包

(一) 编译打包

Android编译打包过程主要分为如下7个步骤:

1.  aapt过程    2.aidl生成Java文件    3.Javac编译    4. 生成dex文件    5.生成apk文件    6.签名apk文件    7. zipalign优化签名包

与JVM不同,DVM运行的文件是.dex文件,.dex文件优化了.class文件,dex文件包含了我们一个工程所有的类,方法,字段等等的信息。

(二)类的加载

根据一个类名,去寻找这个类的二进制信息,并转化为Class对象,就是类加载。一个类有可能在被引用时加载,也有可能在类初始化发生的时候才加载。如果一个类被加载过,那么在以后整个系统的生命周期内,这个类永远不会被重新加载。

三、Gradle

1. Gradle 是一个基于Groovy语言的构建工具。 

2. Android studio中gradle之所以能够构建Android工程,是因为有基于android的gradle插件。Android为了实现编译、打包等,开发者开发了Android插件为Gradle添加了一系列的新特征,特别是在构建Android app上的应用,包括:构建类型、多样化、签名配置、库文件工程等等功能。

3.创建一个新的Android工程,默认的Gradle构建文件包括了setting.gradle, build.gradle(project目录下),build.gradle(module目录下)。这三个文件的功能参考https://blog.csdn.net/qq_30461311/article/details/77775421

想要继续深入了解gradle的同学可以参考 https://my.oschina.net/feiyangxiaomi?q=Gradle

四、安卓的四大基本组件

组件,是对数据和方法的简单封装,我们开发一个软件,将这些组件组合在一起就行了。

Android一共有四种常用的组件:Activity、Service、ContentProvider、BroadcastReceiver

(一)Activity:

1.应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。

2.Activity之间通过Intent进行通信

    显式跳转:

Intent intent = new Intent(this, SecondActivity.class); 
startActivity(intent);

    隐式跳转:

    与intent有关系的一个类叫IntentFilter,一个intent-filter 则用于描述一个activity能够被哪些intent启动。当你打算用显式意图启动某个Activity的时候,设置intent-filter是完全没有用的。对于每一个activity,可以有任意数量的intent-filter,在隐式意图的匹配过程当中,只要匹配上了任意一个intent-filter都能启动这个Activity。IntentFilter 需试要在AndroidManifest.xml 中定义。含有如下过滤器的Activity组件为默认启动类当程序启动时系统自动调用它。

<intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

3.每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity

(二)Service:

一个Service 是一段长生命周期的,没有用户界面的程序。例如,在后台持续播放音乐就是一个service

(三)ContentProvider:

Content Provider使一个应用程序的指定数据集提供给其他应用程序。例如,通讯录数据被多个应用程序使用,且必须存储在一个content provider中

(四)BroadcastReceiver

你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。

五、安卓的五种存储方式

在安卓中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供器(Content provider)和网络。参考https://blog.csdn.net/weixin_39399984/article/details/79249079

六、Activity的启动流程

当运行我们的Android应用程序时,Android操作系统首先会去找我们的AndroidManifest.xml这个文件,这个文件是我们应用程序的主配置文件,因为我们一个应用可能有多个的Activity,那我们首先会展示哪个Activity呢?这个主配置文件就定义了当前这个应用默认所加载的那个Activity对象(刚刚提到的intent-filter),找到这个Activity对象后,就会调用其onCreate()方法,这个方法主要就是用来加载我们的布局文件的,通过 setContentView()方法可以来加载我们指定的布局文件,最后根据布局文件中的各个控件显示在我们的屏幕上。

在安卓中,是没有主函数这样的概念,都是从配置文件里读取从哪开始。Android里面是按照生命周期来执行的,生命周期从OnCreate()开始。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值