关于安卓的一些残缺笔记

news2025/2/26 23:51:05

安卓笔记

    • 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应用程序架构分析

image-20221116201419881

逻辑控制层与表现层:在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界面涉及到生命周期的情况

Activity1Activity2
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类
image-20221120195215751 image-20221120195411034 image-20221120195428737 image-20221120195448438 image-20221120195504615

设计手机用户界面应解决的问题

  • 需要界面设计与程序逻辑完全分离,利于并行开发,在后期修改界面时,不用修改逻辑代码
  • 根据不同型号手机的屏幕解析度、尺寸和纵横比各不相同,自动调整界面上部分控件的位置和尺寸,避免因为屏幕信息的变化而出现显示错误
  • 能够合理利用较小的屏幕显示空间,构造出符合人机交互规律的用户界面,避免出现凌乱、拥挤的用户界面

Android用户界面框架

image-20221120200717284

Activity

  • Activity代表的是显示给用户的窗口或屏幕
  • Android中定义Activity使用一个view和viewgroup的树状节点
  • 要显示一个用户界面就需要给一个Activity分配一个View或者布局 ---- setContentView()方法

界面布局

  • 界面布局Layout是用户界面结构的描述,定义了界面中所有的元素、结构和相互关系

  • 声明Android程序的界面布局有两种方法

    • 使用XML文件描述界面布局
    • 在程序运行时动态添加或修改界面布局
  • 用户既可以独立使用任何一种声明界面布局的方式,也可以同时使用两种方式

  • 使用XML文件声明界面布局的特点

    • 将程序的表现层和控制层分离

    • 在后期修改用户界面时,无需更改程序的源代码

    • 用户还能够通过可视化工具直接看到所设计的用户界面,有利于加快界面设计的过程,并且为界面设计与开发带来极大的便利性

image-20221120201507634 image-20221120201613319

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对内核进行了增强

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql视图和存储过程

视图视图就是将一条sql查询语句封装起来,之后使用sql时,只需要查询视图即可,查询视图时会将这条sql语句再次执行一遍。视图不保存数据,数据还是在表中。SELECT 语句所查询的表称为视图的基表,而查询的结果集称为虚拟表…

ATTCK v10版本战术实战研究—持久化(一)

一、前言“在网络安全的世界里,白帽子与黑帽子之间无时无刻都在进行着正与邪的对抗,似乎永无休止。正所谓,道高一尺魔高一丈,巨大的利益驱使着个人或组织利用技术进行不法行为,花样层出不穷,令人防不胜防。…

udk2017环境搭建编译步骤

win10 64bit系统 1.参考minnowboard-max-rel-1-01-bin-releasenotes-for-binary-firmware-images.TXT MyWorkspace.rar 解压到c:\,参考txt中的git操作 3.复制ASL,NASM 到c:\ 安装vs2015 ,勾选sdk 5.安装 python-2.7.10.amd64.msi&#xf…

【论文泛读】NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis | NeRF: 用于视图合成的神经辐射场的场景表示 | 2020年 出自文献:Mildenhall B, Srinivasan P P, Tancik M, et al. Nerf: Representing scenes as neural radiance fields for view synth…

泼辣修图Polarr5.11.4 版,让你的创意无限延伸

泼辣修图是一款非常实用的图片处理软件,它不仅拥有丰富的图片处理功能,而且还能够轻松地实现自定义操作。泼辣修图的操作界面非常简洁,功能也非常丰富,使用起来非常方便快捷。 泼辣修图拥有非常丰富的图片处理功能,包括…

【冲刺蓝桥杯的最后30天】day1

大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨‍💻,断更了整整一年,又开始恢复CSDN更新,从今天开始逐渐恢复更新状态,正在备战蓝桥杯的小伙伴可以支持一下哦!…

Rockchip Android13 GKI开发指南

Rockchip Android13 GKI开发指南 文章目录Rockchip Android13 GKI开发指南GKI介绍Google upstream kernel下载及编译Rockchip SDK中GKI相关目录介绍Rockchip GKI编译代码修改编译固件烧写KO编译及修改添加新的模块驱动的方法调试ko方法开机log确认uboot阶段Android阶段KO加载KO…

Java IO流详解

文章目录一、File1.1 构造方法1.2 文件操作 方法1.3 目录操作 方法1.4 文件检测 方法1.5 获取文件信息 方法1.6 应用练习二、IO 流2.1 InputStream 字节输入流 (读)🍓FileInputStream🍓BufferedInputStream2.2 OutputStream 字节输出流 (写)&#x1f34c…

【Redis】redis大key和大value的危害,如何处理?

前序 还记得上次和同事一起去面试候选人时,同事提了一个问题:Redis的大key有什么危害?当时候选人主要作答的角度是一个key的value较大时的情况,比如: 内存不均:单value较大时,可能会导致节点之…

[经验分享]gpt-3.5-Turbo|unity中实现http接口调用gpt新接口以及信息处理的实现案例分享

最近openAI发布了目前chatGPT所使用的模型gpt-3.5-Turbo,之前使用了text-davinci-003模型做了一个galgame的AI女友对话的demo。这次趁着新接口的发布,对这个demo也同步更新了模型调用的代码。本篇文章将分享一下,如何在unity里使用UnityWebRe…

记录一次PWM信号异常问题

问题我使用单片机输出PWM控制机械臂,但是控制过程中,机械臂总是会出现莫名的抽动。利用示波器测试PWM信号,发现信号正常。过程(1)在反复的测试过程中,队友提出,将示波器的地线放在左侧的GND波形…

计算机EI会议论文,和EI期刊论文有什么区别? - 易智编译EaseEditing

EI期刊论文,是期刊论文的一种。顾名思义,就是指发在期刊上的论文。 期刊论文发表的格式需要具体参考各期刊文章的要求学术论文格式,主要会发在月刊/季刊/年刊/不定期的刊上。 目前,国际著名的科技文献检索系统是SCI(…

安卓-AndroidManifest.xml修复

解析编译之后的AndroidManifest文件格式:http://www.520monkey.com/archives/575 案例apk jadx打开发现AndroidManifest.xml异常,无法正常显示 那么我们用apktool反编译试试 apktool d APK逆向-2.apk -f可以看到报错了,显示不能解析此xml…

[SSD科普] 固态硬盘物理接口SATA、M.2、PCIe常见疑问,如何选择?

前言犹记得当年Windows 7系统体验指数中,那5.9分磁盘分数,在其余四项的7.9分面前,似乎已经告诉我们机械硬盘注定被时代淘汰。势如破竹的SSD固态硬盘,彻底打破了温彻斯特结构的机械硬盘多年来在电脑硬件领域的统治。SSD数倍于HDD机…

数据结构 “串“ 的补充提升与KMP算法及其优化的具体实现

❤️作者主页:微凉秋意 ✅作者简介:后端领域优质创作者🏆,CSDN内容合伙人🏆,阿里云专家博主🏆 ✨精品专栏:C面向对象 🔥系列专栏:数据结构与课程设计 文章目录…

XSS漏洞基本概念

目录 XSS的原理和分类 XSS漏洞分类 dom 存储型 XSS的危害 XSS漏洞的验证 XSS的黑盒测试 XSS漏洞的白盒测试 XSS的原理和分类 xss全称跨站脚本攻击xss(Cross Site Scripting) 为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&am…

MCU实现对外部脉冲信号的计数功能

有的传感器会输出脉冲信号,MCU需要统计脉冲输入的个数,通常有如下实现方式: 1.GPIO中断 原理很简单,利用GPIO的上升沿或者下降沿中断,进中断的次数就是脉冲的个数。只需要在中断服务函数里计数即可。 使用GPIO中断需…

Streaming System是第一章翻译

GIthub链接,欢迎志同道合的小伙伴一起翻译 Chapter 1.Streaming101 如今,流数据处理在大数据中是非常重要的,其主要原因是: 企业渴望对他们的数据有更及时的了解,而转换到流处理是实现更低延迟的一个好方法&#xf…

使用vite+vue3.0 创建一个cesium基础应用 ----01 项目搭建

使用vitevue3.0 创建一个cesium基础应用 ----01 项目搭建 1.使用yarn创建一个vite项目 我们可以在vite官网找到vite创建项目的命令 https://cn.vitejs.dev/ 可以使用yarn创建项目选择使用vue3.0框架,语言使用js 创建完成后结构如下: 2.找到vite社区中的…

idea通过Dockerfile上传项目到服务器

Docker通过Dockerfile上传项目 文章目录Docker通过Dockerfile上传项目1.创建一个简单的springBoot项目2.写一个简单的接口3.写Dockerfile文件4.新建docker镜像5.上传代码运行1.创建一个简单的springBoot项目 点击文件–>新建–>项目 点击选择Spring Initializer &#x…