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

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同

IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制

1、沙盒机制:

概念:沙盒是一种安全机制,用于防止不同应用之间互相访问

作用:就是存储数据,每个沙盒就相当于每个每个应用的系统目录

核心:sandbox对应用程序执行各种操作的权限限制

描述:

  • 每个应用都有自己对应的沙盒,应用的活动范围都限定在自己的沙盒里
  • 每个应用程序之间不能相互访问非本程序的沙盒( APP之间不能相互通,唯独可以通过URL Scheme可以通信)
  • 在访问别人沙盒内的数据时需要访问权限,应用程序请求的数据都要通过权限检测,不符合条件的话,不会被放行
  • 用于保存非代码文件,例如图像,图标,声音,映像,属性列表,文本文件等。

2、虚拟机机制:

  • android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。

二、对app内存消耗处理方式不同

Apple的应用程序在内存消耗过高时会收到内存警告,如果不及时处理的话应用程序会自动退出,而不像Windows系统一样,中了病毒或者木马会一直消耗内存,直到内存没有了才宕机。

三、后台制度不同

IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭

ios的后台是伪后台,iOS应用被送到后台,它的主线程会被暂停,其他进程会有一点处理数据的时间,然后所有的线程都被挂起了

iOS系统后台机制大概可以分为5种状态:

  • Not Running:APP没有启动,也没有后台运行;
  • Active:用户正在使用APP,比如说我们聊微信看网页的时候,APP就处于Active状态;
  • Inactive:这是一个过渡的状态,APP虽然打开了,但是用户没有跟APP有任何互动操作;
  • Background:APP在后台运行,微信会在没有打开的时候接收消息;
  • Suspended:APP虽然在后台运行,但是处于休眠状态,只占用一点内存

安卓的所有应用都可以在后台运行,除非用户自己手动操作或者内存不足才会关闭,android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机,每个app都有自己的进程,每个进程都有自己的内存空间

安卓的进程从高到底分为5种:

  • 前台进程:正在与用户交互的进程,通俗来讲就是你当前使用app的进程;
  • 可见进程:可以被用户看到,但是没有和用户交互,例如一个activity以对话框的形式覆盖在当前activity上面,当前activity可以被用户看到,但是不和用户交互;
  • 服务进程:这个相信大家都熟悉,也就是我们常说的service,能够运行在后台,常见的有音乐类的app;
  • 后台进程:注意,这个后台进程不要和服务进程搞混了,它的意思是说当前app在后台运行,例如我启动了app,然后点击home返回到桌面,那么这个app就会被切回到后台进程;
  • 空进程:空进程指的是在这些进程内部,没有任何东西在运行。保留这种进程的的唯一目的是用作缓存,以缩短该应用下次在其中运行组件所需的启动时间。

四、最高权限指令不同

  • IOS中用于UI指令权限最高

  • 安卓中数据处理指令权限最高

五、推送机制不同

  • iOS在软件关闭的情况下,依然可以接收推送信息
    机消息当然都是通过服务器推送到我们手机上的,对于iOS的用户来说,苹果有APNs服务器来负责消息的推送。当你第一次使用APP时,会询问是否接收通知,如果你选择了是,那么服务器就会记录你的ID,当有消息通知的时候,这些数据是先推送到苹果的服务器中,然后通过苹果的APN服务器推送到用户手机上的。这样的设计让软件彻底关闭的时候还可以接收到消息通知,一方面释放内存,一方面也不会耽误接收消息。

  • Android在软件关闭的情况下,无法接收推送信息

    在Android手机来说,谷歌也有类似的GCM服务器来推送消息,不过因为国内的手机都没有谷歌服务无法收到谷歌GCM服务器推送的消息。

    安卓的推送都是通服务来实现的,就算应用没有启动但是服务还在一样可以收到推送。所以只能是安卓自己启动Services来实现推送,当应用杀死后Services如果被杀死就无法收到推送

六、抓取方式不同

  • ios调试需要使用xcode

  • 安卓使用adb

七、灰度发版机制不同

  • ios灰度机制

    是将同一个包在七天内七个阶段从1%放到100%

    也可以在灰度过程中,直接放到100%

    在这个包发现线上bug的时候,可以将发包进度暂停,修正bug后,上传新包

  • 谷歌灰度机制

    可以给一个包指定一个灰度量,然后逐渐放量到100%
    也可以给不同的rc包指定不同的量,发到全量

八、审核机制不同

ios发包审核比较严格,经常被拒

  • ios没有返回键

    安卓测试需要注意点击返回键后的反馈是否正确

  • ios比较流畅

    适配测试,Android端比较多,ios较少

新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash) 

相关文章:

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同 IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。 1、沙盒机制: 概念:沙盒是一种安全机制,用于防止不同应用之间互相访问 作用:就是存储数据,每个沙盒就相当于每个每个应用的系…...

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 (1)先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 (2)在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…...

Springboot中使用Retrofit

Retrofit官网 https://square.github.io/retrofit/ 配置gradle implementation("com.squareup.okhttp3:okhttp:4.12.0")implementation ("com.squareup.retrofit2:retrofit:2.11.0")implementation ("com.squareup.retrofit2:converter-gson:2.11.0…...

字体子集化实践探索

最近项目rust生成PDF组件printpdf需要内嵌完整字体导致生成的PDF很大,需要做压缩,但是rust的类库allsorts::subset::subset不支持windows,所以做了一些windows下字体子集化的尝试 方案一:node.js做子集化 fontmin 缺点是也需要集…...

统计一个目录下的文件及目录数量-linux010

要统计一个目录下的文件数量(包括子目录中的文件),可以使用以下命令: 1. 统计所有文件数量(包括子目录) 在终端中运行以下命令: find /path/to/directory -type f | wc -l 解释:…...

【计算机网络】期末考试预习复习|上

作业讲解 物理层作业 共有4个用户进行CDMA通信。这4个用户的码片序列为: A: (–1 –1 –1 1 1 –1 1 1);B: (–1 –1 1 –1 1 1 1 –1) C: (–1 1 –1 1 1 1 –1 –1);D: (–1 1 –1 –1 –1 –1 1 –1) 现收到码片序列:(–1 1 –…...

构建一个rust生产应用读书笔记四(实战3)

从这一节开始,我们将继续完善邮件订阅生产级应用,根据作者的选型sqlx作为数据库操作的类库,它有如下优点: 它旨在提供高效、安全且易于使用的数据库交互体验。sqlx 支持多种数据库,包括 PostgreSQL、MySQL 和 SQLite&…...

idea无法识别文件,如何把floder文件恢复成model

前景: 昨天,我在之前的A1214模块包下新增了一个demo类,然后又新建了一个A1216模块,写了算法题,后面打算用git提交,发现之前的A1214模块下的demo类和新建的模块源文件都已经被追踪了,都是绿色的&…...

更新数据时Redis的操作

一般做法是在数据库更新后删除Redis中对应的缓存数据,而非更新数据。那么为什么要这么做呢? 以下是一些拙见 场景使用 金融交易系统:在金融领域,数据的准确性至关重要。任何数据不一致都可能导致严重的财务损失。因此&#xff0…...

Flink CDC 读取oracle库数据性能优化

通过综合考虑Oracle数据库配置、Flink作业配置以及其他优化措施,可以显著提升Flink CDC读取Oracle库数据的性能和效率。可以从以下几个方面进行: 一、Oracle数据库配置优化 ‌开启归档日志‌: 通过执行sqlplus /assysdba或sqlplus/nolog命令…...

学习记录:js算法(一百二十三):不同路径 II

文章目录 不同路径 II思路一 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。 网格中的障碍物…...

mybatis 的动态sql 和缓存

动态SQL 可以根据具体的参数条件,来对SQL语句进行动态拼接。 比如在以前的开发中,由于不确定查询参数是否存在,许多人会使用类似于where 1 1 来作为前缀,然后后面用AND 拼接要查询的参数,这样,就算要查询…...

You need to call SQLitePCL.raw.SetProvider()

在.NET环境中使用Entity Framework Core(EF Core)连接SQLite数据库时,报错。 使用框架 .NET8 错误信息: Exception: You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling…...

MYSQL执行一条update语句,期间发生了什么

客户端先通过连接器建立连接,连接器自会判断用户身份; 因为这是一条 update 语句,所以不需要经过查询缓存,但是表上有更新语句,是会把整个表的查询缓存清空的,所以说查询缓存很鸡肋,在 MySQL 8…...

《安全工程师自我防护指南:直面数字威胁的有效策略与实践》

一、法律层面的保护 获取授权 在对目标系统进行任何测试之前,确保已经获得了合法的授权。这可以是来自目标组织(如企业的信息安全部门)的书面授权或者合同协议。例如,一家公司聘请外部安全团队来测试其网络安全防御能力&#xff…...

SpringBoot2+Vue2开发工作管理系统

项目介绍 在工作中使用的管理系统,可以随手记录一些笔记、可以汇总一些常用网站的链接、可以管理自己负责的项目、可以记录每日日报和查看历史日报、可以记录加班情况、可以记录报销内容、可以编写文章文档。 系统功能 我的笔记快捷入口项目管理今日日报我的日报…...

华为HarmonyOS实现跨多个子系统融合的场景化服务 -- 7 地图选点Button

场景介绍 本章节将向您介绍如何使用地图选点Button功能,开发者可调用Button组件拉起Map Kit的地图选点页面,用户在地图中选择位置后,位置相关信息返回Button界面。 说明 该场景暂不支持2in1设备。 前提条件 参见开发准备。 效果图展示 …...

Web项目图片视频加载缓慢/首屏加载白屏

Web项目图片视频加载缓慢/首屏加载白屏 文章目录 Web项目图片视频加载缓慢/首屏加载白屏一、原因二、 解决方案2.1、 图片和视频的优化2.1.1、压缩图片或视频2.1.2、 选择合适的图片或视频格式2.1.3、 使用图片或视频 CDN 加速2.1.4、Nginx中开启gzip 三、压缩工具推荐 一、原因…...

Java系统对接企业微信审批项目流程

若依做的一个系统需求需要对接企业微信的人员去审核订单 回款之类,以下是详细步骤. 1.首先登入企业微信管理后台: 企业微信 2.找到应用管理 3.自建一个应用 4.这些数据都可以拿到 5.配置可信Ip 6.进入有两种方法让你去配置 ,第一种用公司的…...

MacOS 命令行详解使用教程

本章讲述MacOs命令行详解的使用教程,感谢大家观看。 本人博客:如烟花般绚烂却又稍纵即逝的主页 MacOs命令行前言: 在 macOS 上,Terminal(终端) 是一个功能强大的工具,它允许用户通过命令行直接与系统交互。本教程将详细介绍 macOS…...

易语言鼠标轨迹算法(游戏防检测算法)

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象 一、引言二、环境三、待解析的DDL四、解析后的对象结构五、完整的UT类六、控制台输出总结 一、引言 在日常开发中,有些需要对SQL进行解析的场景,比如读取表结构信息,生成文档、…...

靜態IP與DHCP的區別和用法

IP地址可以是靜態的,即固定不變,也可以是動態的,定期更改或每次連接後更改。 什麼是靜態 IP? 靜態IP地址是固定的,手動分配的IP地址,不會隨時間而變化。分配後,此 IP 保持不變,並由…...

【C#】Debug和Release的区别和使用

在 C 或 C# 开发中,Debug 和 Release 是两种不同的编译配置,主要用于开发过程中的不同阶段。它们的主要区别如下: 1. Debug 版本 Debug 版本是为了开发和调试程序而优化的构建模式。 特点: 包含调试信息: Debug 版本…...

Element plus 下拉框组件选中一个选项后显示的是 value 而不是 label

最近刚进行 Vue3 Element plus 项目实践&#xff0c;在进行表单二次封装的时候&#xff0c;表单元素 select 下拉框组件选中一个选项后显示的是 value 而不是 label&#xff0c;下面上代码&#xff1a; 原来的写法&#xff1a; <el-selectv-if"v.type select"…...

Redis - 消息队列 Stream

一、概述 消息队列 定义 消息队列模型&#xff1a;一种分布式系统中的消息传递方案&#xff0c;由消息队列、生产者和消费者组成消息队列&#xff1a;负责存储和管理消息的中间件&#xff0c;也称为消息代理&#xff08;Message Broker&#xff09;生产者&#xff1a;负责 产…...

【多维DP】【hard】力扣1269. 停在原地的方案数

有一个长度为 arrLen 的数组&#xff0c;开始有一个指针在索引 0 处。 每一步操作中&#xff0c;你可以将指针向左或向右移动 1 步&#xff0c;或者停在原地&#xff08;指针不能被移动到数组范围外&#xff09;。 给你两个整数 steps 和 arrLen &#xff0c;请你计算并返回&…...

Android显示系统(11)- 向SurfaceFlinger申请Surface

Android显示系统&#xff08;01&#xff09;- 架构分析 Android显示系统&#xff08;02&#xff09;- OpenGL ES - 概述 Android显示系统&#xff08;03&#xff09;- OpenGL ES - GLSurfaceView的使用 Android显示系统&#xff08;04&#xff09;- OpenGL ES - Shader绘制三角…...

OpenCV实验篇:识别图片颜色并绘制轮廓

第三篇&#xff1a;识别图片颜色并绘制轮廓 1. 实验原理 颜色识别的原理&#xff1a; 颜色在图像处理中通常使用 HSV 空间来表示。 HSV 空间是基于人类视觉系统的一种颜色模型&#xff0c;其中&#xff1a; H&#xff08;Hue&#xff09;&#xff1a;色调&#xff0c;表示颜色…...

鸿蒙-应用内悬浮窗

//悬浮窗工具类 import { window } from kit.ArkUI; import { BusinessError } from kit.BasicServicesKit; import { Logger } from mbbase/common-ui; import * as FloatedWindowPage from ./FloatedWindowPage; // 导入命名路由页面 const TAG [FloatedWindowUtils]; ex…...

Ubuntu Linux操作系统

一、Ubuntu简介 Ubuntu Linux是由南非人马克沙特尔沃思(Mark Shuttleworth)创办的基于Debian Linux的操作系统&#xff0c;于2004年10月公布。Ubuntu是一个以桌面应用为主的Linux发行版操作系统。Ubuntu拥有庞大的社区力量&#xff0c;用户可以方便地从社区获得帮助。其官方网…...

Linux下SVN客户端保存账号密码

参考文章&#xff1a;解决&#xff1a;Linux上SVN 1.12版本以上无法直接存储明文密码_linux svn 保存密码-CSDN博客新版本svn使用gpg-agent存储密码-CSDN博客svn之无法让 SVN 存储密码&#xff0c;即使配置设置为允许_编程设计_ITGUEST 方法一&#xff1a;明文方式保存密码 首…...

【DBeaver】连接带kerberos的hive[Apache|HDP]

目录 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 1.2 环境配置 二、基于Cloudera驱动创建连接 三、基于Hive原生驱动创建连接 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 在Kerberos官网下载,地址如下&#xff1a;https://web.mit.edu/kerberos…...

Android-Glide详解

目录 一&#xff0c;介绍 二&#xff0c;使用 三&#xff0c;源码分析思路 四&#xff0c;with源码分析 五&#xff0c;模拟Glide生命周期管理 一&#xff0c;介绍 Glide目前是安卓最主流的加载图片的框架&#xff0c;也是源码最为复杂的框架之一。 要想完完全全吃透Glide的源…...

【容器】k8s学习笔记原理详解(十万字超详细)

Pod详解 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少Pause容器&#xff0c;这是每个Pod都会有的一个根容器&#xff0c;它的作用有两个&#xff1a; 可以以它为依据&am…...

SQL Server通过存储过程实现自定义邮件格式并定时发送

在 SQL Server 中,可以通过存储过程实现自定义邮件格式并定时发送。这通常涉及以下几个步骤: 1. 配置 Database Mail:首先需要配置 SQL Server 的 Database Mail 功能。 2. 创建存储过程:编写存储过程来生成自定义邮件格式并发送邮件。 3. 设置 SQL Server 代理作…...

通过增强的 vSphere 集成增强你的 vSphere 监控

作者&#xff1a;来自 Elastic Ishleen Kaur•Lalit Satapathy vSphere 是 VMware 的云计算虚拟化平台&#xff0c;提供一套功能强大的虚拟化资源管理套件。它允许组织创建、管理和优化虚拟环境&#xff0c;提供高可用性、负载平衡和简化资源分配等高级功能。vSphere 可以高效利…...

C++ 并发专题 - C++线程同步的几种方法

一&#xff1a;概述 线程同步是多线程编程中的一个重要概念&#xff0c;它用于控制多个线程之间对共享资源的访问&#xff0c;避免竞态条件&#xff08;race condition&#xff09;和数据不一致的问题。线程同步确保在多线程环境中&#xff0c;多个线程访问共享数据时能够按照某…...

[java]网络编程

java.net.*包下提供了网络编程的解决方案 通信架构 CS架构 客户端 客户端需要开发 用户需要安装 服务端 需要开发 BS架构 浏览器 不需要开发 需要安装浏览器 服务器 需要开发 网络通信三要素 IP地址 是设备在网络中的唯一标识, 全称 互联网协议地址 分类 公网IP 可…...

[C++]类的继承

一、什么是继承 1.定义&#xff1a; 在 C 中&#xff0c;继承是一种机制&#xff0c;允许一个类&#xff08;派生类&#xff09;继承另一个类&#xff08;基类&#xff09;的成员&#xff08;数据和函数&#xff09;。继承使得派生类能够直接访问基类的公有和保护成员&#xf…...

2024安装hexo和next并部署到github和服务器最新教程

碎碎念 本来打算写点算法题上文所说的题目&#xff0c;结果被其他事情吸引了注意力。其实我之前也有过其他博客网站&#xff0c;但因为长期不维护&#xff0c;导致数据丢失其实是我懒得备份。这个博客现在部署在GitHub Pages上&#xff0c;github不倒&#xff0c;网站不灭&…...

【spring】@Qualifier注解

目录 1. 说明2. 用法示例2.1 标注在字段上2.2 标注在方法上2.3 标注在类上2.4 在自定义注解上的应用 3. 注意事项 1. 说明 1.Qualifier是Spring框架中的一个注解&#xff0c;主要用于解决依赖注入时的歧义性问题。2.定义&#xff1a;Qualifier是一个限定符注解&#xff0c;用于…...

uniapp 应用的生命周期、页面的生命周期、组件的生命周期

uniapp 作为一款跨平台的移动应用开发框架&#xff0c;其生命周期分为应用生命周期、页面生命周期和组件生命周期。下面分别介绍这三种生命周期的具体内容&#xff1a; 应用生命周期 应用生命周期仅适用于整个应用&#xff0c;在 App.vue 中可以监听到以下生命周期函数&#…...

热更新解决方案4——xLua热补丁

概述 运行时不在执行C#中的代码&#xff0c;而是执行Lua中的代码&#xff0c;相当于是打了个补丁。 1.第一个热补丁 2.多函数替换 3.协程函数替换 在原HotfixMain脚本中只加个协程函数即可&#xff08;和在Start中启动协程函数&#xff09; 4.索引器和属性替换 在HotfixMain中…...

【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…...

3.2.1.2 汇编版 原子操作 CAS

基本原理说明 在 x86 和 ARM 架构上&#xff0c;原子操作通常利用硬件提供的原子指令来实现&#xff0c;比如 LOCK 前缀&#xff08;x86&#xff09;或 LDREX/STREX&#xff08;ARM&#xff09;。以下是一些关键的原子操作&#xff08;例如原子递增和比较交换&#xff09;的汇…...

关于llama2:从原始llama-2-7b到llama-2-7b-hf的权重转换教程

1.首先&#xff0c;我是从各个教程里面选了一个实际操作的教程&#xff08;这样更加靠谱&#xff09;&#xff1a;下载llama2-7b并转hf模型_huggingface 下载llama2-7b-chat-hf-CSDN博客 2.但是&#xff0c;其实我在另外一篇更好的教程里面看到过一个坑&#xff08;这篇好像是腾…...

物理机内网穿透

前言&#xff1a; 本文主要讲述如何使用内网穿透以及其安全性。 将带领大家在公网上搭建几个常用靶场。 一&#xff0c;什么是内网穿透。 大多数情况下&#xff0c;我们的个人电脑都处于内网&#xff0c;即没有可公开访问的独立 IP 地址&#xff0c;因此其他内网用户找不到…...

构建一个rust生产应用读书笔记四(实战1)

我们需要从访客那里收集哪些信息&#xff0c;以便将其登记为电子邮件通讯的订阅者&#xff1f; 电子邮件地址&#xff1a;这是最基本的要求&#xff0c;因为我们需要通过电子邮件地址向订阅者发送内容。姓名&#xff1a;虽然这不是强制性的&#xff0c;但我们希望收集一个名字…...

[LeetCode-Python版]206. 反转链表(迭代+递归两种解法)

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例 3&#xff1…...