安卓笔记
- Android应用项目的开发过程
- Android的调试
- Android项目文档结构
- Intent的显式/隐式调用
- Activity的生命周期
- 1个Activity界面涉及到生命周期的情况
- 2个Activity界面涉及到生命周期的情况
- Android布局的理论讲解
- Activity
- 界面布局
- ContentProvider是如何实现数据共享
- Android整体架构及各层作用
Android应用项目的开发过程
开发Andriod的应用程序的一版过程
1.在Android Studio中生成Andriod应用项目框架
2.修改或编写Java源程序
3.修改或编写xml源程序
4.调用模拟器运行应用程序
Android应用程序架构分析

逻辑控制层与表现层:在Android应用程序中,逻辑控制层与表现层是分开的设计的。逻辑控制层由Java应用程序实现,表现层由XML文档描述。
Android的调试
Android项目文档结构
Intent的显式/隐式调用
Activity的生命周期
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestory()
- onRestart()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tOZU2RTu-1677903549075)(https://sunmingtypora.oss-cn-qingdao.aliyuncs.com/%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.png)]
1个Activity界面涉及到生命周期的情况
Activity的方法 | 状态 |
---|---|
onCreate | 创建Activity时调用 |
onStrart | 当Activity界面变成用户可见时调用 |
onResume | 当Activity界面获得焦点时调用(界面按钮可点击,文本框可输入) |
onPause | 当Activity界面失去焦点(按钮不可) |
onStop | 当Activity变为不可见时调用 |
onDestroy | 当Activity被销毁时调用 |
onRestart | 当Activity再次启动时调用 |
代码测试:
2个Activity界面涉及到生命周期的情况
Activity1 | Activity2 |
---|---|
onCreate onStart onResume 在Activity1中调用Activity2 onPause | |
onCreate onStart onResume | |
onStop | |
在Activity2中返回 | |
onPause | |
onStart onResume | |
onStop onDestory |
代码测试:
Android布局的理论讲解
布局
- Android界面设计被称为布局
- Android中常见的布局包括:
- 相对布局RelativeLayout
- 线性布局LinearLayout
- 表格布局TableLayout
- 网格布局GridLayout
- 帧布局FrameLayout
View
- View在Android中可以理解为视图。它占据屏幕上的一块矩形区域,负责提供组件绘制和事件处理的方法。
- View类是所有的widgets组件的基类。
- View类位于android.view包中,View类的子类一般都位于android.widget包中。
- 比如 android.view.View android.widget.TextView
ViewGroup
- ViewGroup在Android中可以理解为容器。
- ViewGroup类继承自View类,它是View类的扩展,是用来容纳其他组件的容器;
- ViewGroup是一个抽象类,在实际应用中使用ViewGroup的子类来作为容器的
- ViewGroup.MarginLayoutParams类
- ViewGroup.LayoutParams类





设计手机用户界面应解决的问题
- 需要界面设计与程序逻辑完全分离,利于并行开发,在后期修改界面时,不用修改逻辑代码
- 根据不同型号手机的屏幕解析度、尺寸和纵横比各不相同,自动调整界面上部分控件的位置和尺寸,避免因为屏幕信息的变化而出现显示错误
- 能够合理利用较小的屏幕显示空间,构造出符合人机交互规律的用户界面,避免出现凌乱、拥挤的用户界面
Android用户界面框架
Activity
- Activity代表的是显示给用户的窗口或屏幕
- Android中定义Activity使用一个view和viewgroup的树状节点
- 要显示一个用户界面就需要给一个Activity分配一个View或者布局 ---- setContentView()方法
界面布局
-
界面布局Layout是用户界面结构的描述,定义了界面中所有的元素、结构和相互关系
-
声明Android程序的界面布局有两种方法
- 使用XML文件描述界面布局
- 在程序运行时动态添加或修改界面布局
-
用户既可以独立使用任何一种声明界面布局的方式,也可以同时使用两种方式
-
使用XML文件声明界面布局的特点
-
将程序的表现层和控制层分离
-
在后期修改用户界面时,无需更改程序的源代码
-
用户还能够通过可视化工具直接看到所设计的用户界面,有利于加快界面设计的过程,并且为界面设计与开发带来极大的便利性
-


ContentProvider是如何实现数据共享
当一个应用程序要把自己的数据暴露给其他程序时,可以通过ContentProvider来实现。
其他应用可以通过ContenrResolver来操作ContentProvider暴露的数据。
如果应用程序A通过ContentProvider暴露自己的数据操作接口,那么不管A 是否启动,其他程序都可以通过该接口来操作A的内部数据,常有增、删、查、改。
ContentProvider是以Uri的形式对外提供数据,ContenrResolver是根据Uri来访问数据。
步骤:
- 定义自己的ContentProvider类,该类需要继承Android系统提供的ContentProvider基类。
- 在Manifest.xml 文件中注册ContentProvider,(四大组件的使用都需要在Manifest文件中注册) 注册时需要绑定一个URL。
- 例如: android:authorities=“com.myit.providers.MyProvider”
- 说明:authorities就相当于为该ContentProvider指定URL。 注册后,其他应用程序就可以通过该Uri来访问MyProvider所暴露的数据了。
- 其他程序使用ContentResolver来操作。
- 调用Activity的ContentResolver获取ContentResolver对象
- 调用ContentResolver的insert(),delete(),update(),query()进行增删改查。
一般来说,ContentProvider是单例模式,也就是说,当多个应用程序通过ContentResolver来操作ContentProvider提供的数据时,ContentResolver调用的数据操作将会委托给同一个ContentResolver。
Android整体架构及各层作用
Android整体架构图,从上到下依次是 应用程序层(Application)、应用程序框架层(Application Framework)、系统运行库层(Libraries&Android RunTime)、Linux内核层(Linxu Kernel)
应用程序层:
平常大家所使用的Android应用程序都是在这一层上的。在这个层面开发的应用程序都是Java语言编写,调用 Application Framwork 提供的API来完成。
应用程序框架层:
这层为开发人员提供了可以完全访问核心应用程序所使用的API框架
系统运行库层——Libraries
程序库中是一些由C/C++编写的库组成,这些库能够被Android系统中的不同组件使用,他们通过应用程序框架为开发者提供服务
系统运行库层——Android Runtime
Android Runtime 分为 Core Libraries 和 Dalvik虚拟机。Core Libraries 提供了Java语言核心库的大部分功能,这里主要通过JNI(Java Nation Interface)的方式向应用程序框架层提供调用底层程序库(Libraries)的接口
Dalvik虚拟机是为了能够同时高效地运行多个VMs而实现的。每个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例
Linux内核层:
Android依赖于Linux2.6版内核提供的核心系统服务。内核作为一个抽象层,位于软件栈层和硬件层之间,Android对内核进行了增强