关于安卓的一些残缺笔记
安卓笔记
- 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对内核进行了增强
相关文章:
关于安卓的一些残缺笔记
安卓笔记Android应用项目的开发过程Android的调试Android项目文档结构Intent的显式/隐式调用Activity的生命周期1个Activity界面涉及到生命周期的情况2个Activity界面涉及到生命周期的情况Android布局的理论讲解Activity界面布局ContentProvider是如何实现数据共享Android整体架…...
MySQL 中的锁有哪些类型,MySQL 中加锁的原则
锁的类型MySQL 找那个根据加锁的范围,大致可以分成全局锁,表级锁和行级锁。全局锁全局锁,就是对整个数据库加锁。加锁flush tables with read lock解锁unlock tables全局锁会让整个库处于只读状态,之后所有的更新操作都会被阻塞&a…...
Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作
场景 Sqlite数据库 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不…...
2023最新版本RabbitMQ下载安装教程
一、RabbitMQ简介 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。主要用于在进程、应用程序和服务器之间交换数据,可以通过插件支持进行扩展,支持许多协议,并提供高性能、可靠性、集群和高可用队列。 AMQP :Advanced Me…...
如何使用码匠连接 Elasticsearch
目录 在码匠中集成 Elasticsearch 在码匠中使用 Elasticsearch 关于码匠 Elasticsearch 是一个开源的分布式搜索和分析引擎,常用于处理大规模数据集的搜索、实时数据分析和数据挖掘任务。它支持多种数据源,包括关系型数据库(如 MySQL、Pos…...
jmeter学习笔记二(jmeter函数与后置处理器)
Jmeter重要的函数 ${__counter(,)} 计数器 ${__counter(TRUE,)} 默认加1; TRUE,每个用户有自己的计数器;FALSE,使用全局计数器 计数器元件,可以设置起始值,间隔值,最大值。运行结果超过最大值时&a…...
【独家】华为OD机试提供C语言题解 - 子序列长度
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明子序…...
Java之注解
注解1.1 注解的概念1.2 内置注解1.3 元注解1.4 自定义注解1.1 注解的概念 Annotation 是从JDK5.0 开始引入的新技术 Annotation的作用: 不是程序本身,可以对程序做出解释(这一点和注释comment没什么区别)可以被其他程序ÿ…...
【C++】string
【C修炼秘籍】string 目录 【C修炼秘籍】string 文章目录 前言 一、标准库里的string 二、string常用接口功能简介(具体使用和底层转到模拟实现) 1、string类的常见构造函数 2、string类对象的容量操作 3、string类对象的访问及遍历操作 4、 string类对象…...
JVM详解——执行引擎
如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:耶瞳空间 一:执行引擎介绍 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和…...
python学习——【第二弹】
前言 上一篇文章 python学习——【第一弹】给大家介绍了python中的基本数据类型等,这篇文章接着学习python中的运算符的相关内容。 运算符 python中的运算符主要有:算术运算符,赋值运算符,比较运算符,布尔运算符以及…...
242. 有效的字母异位词 349. 两个数组的交集
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意: 若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat…...
web网页设计——JavaScript一些语法
1、事件监听 语法: <1> 元素对象.addEventListener(‘事件类型’,要执行的函数) 三要素:(1)、事件源 (2)事件类型 (3)执行的函数 <2>元素对象.on事件类型 …...
php宝塔搭建部署实战CSM会议室预约系统源码
大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套基于fastadmin开发的CSM会议室预约系统的源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码࿰…...
嵌入式知识点-SPI通讯
该文原自 : 正点原子 01 SPI概述 SPI (Serial Peripheralinterface),顾名思义就是串行外围设备接口。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同…...
C#教程--01 简介
简介 C# 是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的。 C#的特性 现代的、通用的编程语言。 面向对象。 面向组件。 容易学习。 结构化语言。 它产生高效率的程序。 它可以在多种计算机平台上编译。 .Net 框架的一部分。 C#强大的编程…...
【java基础】一篇文章彻底搞懂lambda表达式
文章目录lambda表达式是什么lambda表达式的语法函数式接口初次使用深入理解方法引用 :: 用法快速入门不同形式的::情况1 object::instanceMethod情况2 Class::instanceMethod情况3 Class::staticMethod对于 :: 的一些示例及其注意事项构造器引用变量作用域使用外部变量定义内部…...
通用SQL查询分析器
技术:Java、JSP等摘要:本文主要针对当前很多软件都无法实现跨数据库、跨平台来执行sql语句而用户又仅需做一些基本的增删改查操作的矛盾,设计了一个能够跨平台跨数据库的软件。此软件是一个通用SQL查询分析器,利用java语言本身的跨…...
机器学习100天(三十八):038 朴素贝斯-处理离散数据
《机器学习100天》完整目录:目录 机器学习100天,今天讲的是:朴素贝斯-处理离散数据! 打开 spyder,新建一个 naive_bayes_category.py 脚本。上一节我们引入了一批西瓜样本。并使用朴素贝叶斯公式计算出一个瓜蒂脱落、圆形、青色的西瓜是熟瓜的概率。下面我们来使用 pytho…...
【3.3】指针、二分、SSM项目
二分查找 class Solution {public int search(int[] nums, int target) {int n nums.length;int left 0;int right n - 1;while(left < right){int mid left (right - left) / 2;if(nums[mid] < target){left mid 1;}else if(nums[mid] > target){right mid …...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
