关于安卓的一些残缺笔记

news/2024/7/16 9:13:28 标签: android, android studio, ide

安卓笔记

    • 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

ider_156">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.niftyadmin.cn/n/119084.html

相关文章

时间复杂度的计算

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【数据结构初阶(C实现)】 文章目录123456789时间复杂度(就是一个函数)的计算,…

【fly-iot飞凡物联】(4):在linux系统上搭建arduino环境,可以使用离线包,导入到arduino上即可。

目录前言1,关于2,然后就可以找到ESP32,ESP8266的主版3,方法2,github下载,然后手动添加到ide中吧4,总结前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108971807 未…

对于ThreadLocal的理解

对于ThreadLocal的理解什么是ThreadLocalThreadLocal的使用场景1.线程隔离2.跨函数传值正确使用感想什么是ThreadLocal 在Java的多线程并发执行的过程中,为了保证多个线程对变量的安全访问,可以将变量放到ThreadLocal类型的对象中,是变量在每…

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

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

华为机试题:HJ105 记负均正II(python)

文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

MAX 10 10M50 FPGA(10M50DDF256I7G)10M50DDF484C8G/10M50DDF484I7G

MAX 10器件是单芯片、非易失性低成本可编程逻辑器件(pld),用于集成最优的系统组件集。MAX 10设备的亮点包括:内部存储双配置闪存用户闪存即时支持集成模数转换器(adc)支持Nios II单芯片软核处理器该器件设备是系统管理、I/O扩展、通信控制平面、工业、汽…

王道计算机组成原理课代表 - 考研计算机 第七章 输入输出系统 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “输入输出系统” 章节知识点总结的十分全面,涵括了《计算机组成原理》…

【LeetCode】带环链表两道题

第一题:环形链表 问题介绍 给你一个链表的头节点head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos 来表示链表…