Android培训Android课堂重点内容汇总
一、Android Introduction
Android 是一个允许你在java环境下为手机设备开发应用和游戏的提供丰富应用框架。
二、四大组件
1、Activity
(1)定义:提供给用户一个与app进行交互的UI界面的组件
(2)创建
//步骤
(1 继承Activity或者其子类
(2 必须实现OnCreate()
(3 OnCreate()实现SetContentView(),为这个Activity提供的窗口,添加layout(布局)
(4 在配置文件AndroidManifest.xml中声明该Activity
(3)生命周期
(4)通过传递Intent对象启动,启动方式两种,一种不返回值startActivit(),另一种带返回值startActivityForResult()
2、Broadcast Receiver
(1)定义:用来应答全系统范围之内通知的组件,两种表现形式,一时系统组织的(例如:锁屏、电量低、截图),二是自定义的(例如:下载完成数据发送广播通知),广播通常只做非常小的事情。
3、Content Provider
(1)定义:管理app共享数据集合的组件,只要该组件允许,其他的app就可以对其进行读写操作,例如:通讯录、图库、视频、音频。
(2)通过ContentSolver,发送数据请求,接受请求结果并返回。
(3)使用ContentProvider会是应用的数据被其他应用共享,所以应谨慎使用,例如:搜索联想建议、copy/paste本应用的复杂数据到其他应用中。
4、Service
(1)定义:是一个不需要提供与用户进行交互UI的,运行在后台,进行长时间操作或者远程操作的组件。
(2)Service的两种使用类型:Started和Bound
Started在onStartCommend()方法中接受返回值操作,需要开发者自己管理的启动与停止。
Bound 是将服务绑定到某一个或某些特定的组件上,不需要开发者关心服务的停止,当该服务上的绑定的组件都解绑时该服务会自动销毁。
(3) StartService()启动会激活并将结果返回到onStartCommend()中;BindService()方法激活onBind()方法。
(4)使用技巧:在onCreate()实现服务初始化,针对不同的启动类型选择相应的回调方法处理Service信息,在onDestory()中回收资源,例如线程、监听、广播接受等等,最重要的一点你的服务需要在配置文件中声明,同时为了保证你app的安全性最好设置exported属性为false,但是你的谨慎设置你的enabled属性,他决定你的service能否被实例化,尤其在绑定服务。
(5)什么时候用Thread什么时候用Service?
前因:Service默认运行在当前app进程的主线程中,如果在Service做耗时操作,将有可能导致ANR的发生,耗时操作需要放到线程,但是Service适合执行在后台且不需要与用户进行交互和返回数据的情形,如果需要在Service中做耗时操作,则需要在Service中开启线程,其中有很多种选择:AsynTask、HandleThread或者继承自带工作线程的IntentService。
5 、总结
(1)Activity、Broadcast Receiver、Service通过传递意图参数启动(激活),并且这三者之间可以通过Intent互相交流,Content Provider不需要,它通过Content Resolver启动(激活)
(2)四大组件都需要被声明且都具有静态声明的方式,但是Broadcast Receiver提供了一种动态声明的方式:registerReceiver().
三、配置文件-mainfest
1、作用:声明app权限、组件、版本
2、在Android Studio中,版本控制等设置属性被迁移到了当前Gradle中,区别Eclipse Ant只能在配置文件内设置.
四、UI
1、手机坐标
默认的左上角坐标为(0,0),水平方向为x轴,垂直方向为y轴
2、布局
(1)LinearLayout-线性布局 属于ViewGroup类
(1 特点:子布局呈线性分布,在同一时间只能呈现出一个方向的显示效果,通过orientation设置
(2 layout_gravity:是指当前布局,在最靠近它的父布局中的位置
(3 gravity:设置当前布局内部,子布局的具体位置
(4 layout_weight为当前布局设置在父布局中的权重,但是要注意要将相应方向的属性值设置为0dp,例如:设置水平方向等分,应将layout_width设置为0dp,默认values是0。
(2)RelativeLayout-相对布局 也属于ViewGroup类
(1:当出现多个LinearLayout嵌套的时候,可以采用RelativeLayout提高效率(具体用布局分析工具查看)
(2:具有两种设置位置的方式:一是根据与父布局的相对关系确定;二根据父布局内以确定子布局的位置的相对位置确定;
(3)FrameLayout-帧布局
(4)GridView+ListView
3、计量单位
(1)px、sp(设置文字大小的)、dp(除了文字大小以外的尺寸)
4、TextView、Button、EditView、ImageView
5、R文件
6、View类
(1)onMeasure()\onLayout()\onDraw();
7、回调机制之OnClickListener
8、沙盒
(1)app安装到设备之后,系统便会为app分配一块安全区域的“空间”,称之为sandbox(沙盒)
(2)作用:
(1:首先Android OS是一个多用户的Linux系统,是每个app成为了多用户的一份子
(2:系统通过一个独一无二的Linux user ID管理app,但是app本身并不知道它自己的ID
(3:保证了每一个app都独立运行在自己的进程中,而且app之间运行过程互不影响。
(4:Android 系统在app中的组件需要被执行的时候,通过ID开启他们的进程,当app长时间不执行或者系统需要回收内存为其他app提供资源的时候回关掉当前app。
(5:通过最小权限原则保证用户的可以正常运行的权限,其他权限交由用户自己选择是否开启,这样营造了一个Android所谓的安全稳固的环境。
(3)提供了两种方式,打破沙盒限制,实现多个app之间的数据共享以及app可以接入到系统的服务。
(1:通过设置相同的Linux user ID,是多个app运行在一个进程里,可以互相访问彼此文件,相同的Linux 进程可以共享具有相同证书签名的VM里。
(2:在app首次安装的时刻,会让用户准许需要的权限,实现用户接入到系统权限(通讯录,摄像头、蓝牙、SD等等)的目的。
9、设备适配
(1)主要通过App Resource文件下的内容,达到适配的效果.
(2