当前位置: 首页 > news >正文

android知识总结

Activity启动模式

standard (标准模式)

 每次启动该 Activity(例如,通过 startActivity()),系统总会创建一个新的实例,并将其放入调用者(启动它的那个 Activity)所在的任务栈中。

singleTop (栈顶复用模式)

 如果要启动的 Activity 已经位于调用者任务栈的栈顶,系统不会创建新实例,而是通过调用该已有实例的 onNewIntent() 方法将新的 Intent 传递给它。如果要启动的 Activity 不在栈顶(即使它存在于栈中但不是栈顶),系统会创建一个新的实例

singleTask (栈内复用模式 / 单任务模式)

 如果在栈中已经存在该 Activity 的实例(无论是否在栈顶),系统会销毁该实例之上的所有其他 Activity,将这个实例带到栈顶,并通过 onNewIntent() 传递新的 Intent。

singleInstance (单实例模式)

系统会为这个 Activity 创建一个新的任务栈这个新栈中只能有这个 Activity 的实例。 任何其他 Activity(包括它自己再次被启动)都不能放入这个栈中。

 Intent

它主要用于在 Android 应用组件之间或不同应用之间执行启动组件、传递数据、广播事件等操作。

显式 Intent

明确指定了目标组件的完整类名,系统直接将 Intent 递送给指定的组件,不进行任何查找或过滤

隐式 Intent

请求系统或其他应用执行一个通用操作,或者启动一个能处理这种操作描述的组件。当发出隐式 Intent 时,Android 系统会将其与设备上所有已安装应用的组件在 AndroidManifest.xml 中声明的 <intent-filter> 进行比较。

Android 四大组件

Activity(活动): 一个 Activity 代表应用中的一个屏幕界面。它是用户与应用交互的主要入口点

Service(服务): Service 是一种在后台执行长时间运行操作的组件,没有用户界面

BroadcastReceiver(广播接收器):BroadcastReceiver 是一个负责响应系统或应用内部广播消息的组件。

ContentProvider(内容提供器): 应用间的数据共享

Activity生命周期

onCreate(Bundle savedInstanceState): Activity 首次创建时调用。

onStart():Activity 即将变得可见(进入前台)时调用。

onResume():可以开始与用户交互时调用。在 onStart() 之后调用,或者在另一个 Activity 离开前台(如对话框关闭、电话挂断)后调用。

onPause(): 当系统即将启动另一个 Activity 或当前 Activity 正在失去焦点但仍部分可见(如启动一个半透明或非全屏的 Activity,如对话框)时调用。

onStop():Activity 对用户完全不可见时调用。

onRestart():当 Activity 从 Stopped 状态重新回到前台时调用。

onDestroy(): Activity 被销毁之前调用。

Fragment

Fragment 的出现是为了解决 Activity 在构建复杂 UI 和适应多屏幕设备时的局限性。

屏幕旋转后Activity生命周期变化

用户首次进入页面后执行的生命周期回调方法onCreate(),onStart(),onResume()

屏幕旋转后活动被销毁并新建,onPause(),onStop(),onDestroy(),onCreate(),onStart(),onResume()。

Android 布局

LinearLayout(线性布局)

子视图按单一方向(水平/垂直)顺序排列。

<LinearLayoutandroid:orientation="vertical" <!-- vertical/horizontal -->>...
</LinearLayout>

 RelativeLayout(相对布局)

通过相对定位确定视图位置.

FrameLayout(帧布局)

所有子视图叠加显示

RecyclerView

RecyclerView 是 Android 中用于高效展示大量数据集的高级视图容器,通过 ViewHolder 模式减少频繁的 findViewById() 开销。

    RecyclerView展示数据的容器视图
    Adapter将数据绑定到视图上(核心逻辑)
    ViewHolder缓存视图组件,避免重复查找
    LayoutManager控制布局排列方式(线性/网格/瀑布流)
    ItemDecoration绘制分割线/间隔样式

    LiveData

    LiveData 是一种可观察的数据存储器类。LiveData 只会将更新通知给活跃的观察者。

    优点

    数据实时更新LiveData 遵循观察者模式。当底层数据发生变化时,LiveData 会通知 Observer对象。

    不会发生内存泄漏:观察者会绑定到Lifecycle对象,并在其关联的生命周期遭到销毁后进行自我清理。

    不再需要手动处理生命周期:LiveData 将自动管理所有这些操作。

    MVVM架构

    • View层:Activity/Fragment
    • ViewModel层:Jetpack ViewModel + Jetpack LivaData
    • Model层:Repository仓库,包含 本地持久性数据 和 服务端数据

    Android 中如何优化性能

    布局优化:避免嵌套过深的布局,使用 ConstraintLayout 替代嵌套布局。

    避免主线程阻塞:将耗时操作放到子线程中。

    自定义view

    当系统提供的标准控件 无法满足设计或功能要求时,就需要自定义 View。

    生命周期

    [改变可见性] --> 构造View() --> onFinishInflate() --> onAttachedToWindow() --> onMeasure() --> onSizeChanged() --> onLayout() --> onDraw() --> onDetackedFromWindow()

    onFinishInflate(): view从xml加载完成调用。 

    onAttachedToWindow():View 被添加到窗口(Window)时调用。

    onMeasure():确定 View 自身及其子 View(如果是 ViewGroup)的大小。

    onSizeChanged():View 尺寸首次确定或发生变化时。

    onLayout(): 确定 View 自身的位置。

    onDraw():将 View 内容绘制到屏幕上。

    http://www.lqws.cn/news/151255.html

    相关文章:

  • 深入学习RabbitMQ队列的知识
  • RabbitMQ实用技巧
  • Soundprivacy
  • hbase资源和数据权限控制
  • 通过BUG(prvIdleTask、pxTasksWaitingTerminatio不断跳转问题)了解空闲函数(prvIdleTask)和TCB
  • 8.axios Http网络请求库(1)
  • Cilium动手实验室: 精通之旅---4.Cilium Gateway API - Lab
  • C# 中的 IRecipient
  • Vue事件总线
  • Cad 反应器 cad c#二次开发
  • 网络测试实战:金融数据传输的生死时速
  • 第16期_网站搭建_Go个人版网络验证 虚拟主机搭建笔记 不推荐没卡密没完全搭建成功
  • 26考研 | 王道 | 计算机组成原理 | 三、存储系统
  • Selenium常用函数介绍
  • C++自定义简单的内存池
  • App使用webview套壳引入h5(三)——解决打包为app后在安卓机可物理返回但是在苹果手机无法测滑返回的问题
  • C++学习-入门到精通【14】标准库算法
  • 996引擎-自定义装备/道具:限时装备、限时道具
  • 【Linux】 Linux 进程控制
  • mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
  • elementUI点击浏览table所选行数据查看文档
  • .net Span类型和Memory类型
  • 中国森林地上和地下植被碳储量数据集(2002~2021)
  • 在 Oracle 中,创建不同类型索引的 SQL 语法
  • Neo4j图数据库管理:原理、技术与最佳实践
  • MDK程序调试
  • 五、查询处理和查询优化
  • Spring Boot + Elasticsearch + HBase 构建海量数据搜索系统
  • Spring Boot 缓存注解详解:@Cacheable、@CachePut、@CacheEvict(超详细实战版)
  • 【Linux篇】0基础之学习操作系统进程