没有合适的资源?快使用搜索试试~ 我知道了~
基于BLE和Wi-Fi通信架构的Android移动应用程序性能比较
能量文章基于传感器数据驱动应用的原生和混合Android移动应用性能比较基于蓝牙低功耗(BLE)和Wi-Fi通信架构的应用Aleksander Kaczmarczyk、Piotr Zaja Zaghic和Wojciech Zabierowski *罗兹理工大学微电子与计算机科学系。Wólczan' ska221,93-005 Lodz,Poland;al3xkaczmarczyk@gmail.com(A.K.);piotr. p.lodz.pl(P.Z.)*通信地址:wojciech. p.lodz.pl;电话:电话:+48-42-631-26-53翻译后摘要:在智能手机和平板电脑的时代,移动应用程序的普及正在迅速上升。使用它们有无数的目的,例如通信,社交媒体,新闻,发送电子邮件,购物,支付,观看视频和流媒体以及玩游戏。谷歌的Android是目前世界上使用最频繁的移动系统。本文的主要目的是比较为该系统创建的原生和混合移动应用程序,同时考虑使用BLE和Wi-Fi设计系统的需求和挑战。比较是基于Java 8语言和Ionic框架实现的移动应用程序。目的是比较两种技术的数据处理效率,以表明依赖关系,这有助于在基于BLE,Wi-Fi和传感器网络的开发项目中选择技术引文:Kaczmarczyk,A.;ZajaP.;Zabierowski,W.基于传感器数据驱动应用的原生和混合Android移动应用的性能比较基于蓝牙低功耗(BLE)和Wi-Fi通信架构的应用。能源2022,15,4574。https://doi.org/10.3390/en15134574学术编辑:Akhtar Kalam收到日期:2022年接受日期:2022年发布时间:2022年6月23日出版商版权所有:© 2022作者。授权厂商MDPI,瑞士巴塞尔。本文是根据知识共享署名(CC BY)许可证(https:creativecommons.org/licenses/by/4.0/)的条款和条件发布的开放获取文章。关键词:Android;原生应用;混合应用; Java; Ionic1. 介绍我们把这篇文章分成几个部分。首先,在引言中,我们介绍了我们研究的原因,同时也参考了关于这一主题的分析文献,并评论了最新的技术水平。在下面的部分中,我们介绍了一些技术基础,这些技术基础对于了解我们正在研究的内容非常重要随后,我们提出了材料和方法,以描述随后进行的测试,并提出了适当的评论结果。文章最后讨论了所获得的结果和结论中所提出的问题的影响。没有智能手机、平板电脑和其他移动设备,当今世界实际上就不存在。在过去,手机生产商明白,他们的功能清单并不一定以通话和短信结束“智能手机”一词25年前,IBM推出了一款设备,它还可以蜂窝网络的快速发展和随之而来的使用移动网络的成本的降低,以及对廉价移动设备的越来越多的选择2016年底,《每日电讯报》公布的数据显示,移动网站在智能手机和平板电脑上的显示量超过了笔记本和电脑[1]。这也是“移动优先”(或“响应式网页设计”)理念的结果,其基础是创建可以在各种宽度和分辨率的屏幕上显示的互联网网站。虽然使用的成本能源2022,15,4574。https://doi.org/10.3390/en15134574https://www.mdpi.com/journal/energies能源2022,15,45742月20日移动电话已经下降,移动应用程序已经越来越受欢迎。移动-Trends.pl在2017年发表了一篇文章,其中的研究结果显示,某些国家的智能手机用户每月使用数十个移动应用程序[2]。大多数应用程序只能在某些移动系统上使用,例如IOS和Android。这是因为它们是原生应用程序。因此,为了降低应用程序开发成本,寻求解决这个问题的创建混合应用程序的想法诞生了,以增加各种系统上分布的松散性从应用程序性能的角度来看,编程语言的选择很重要。因此,其他人已经开展了此类研究工作Corral 、Sillitti和 Succi [3]对使 用PhoneGap 前端 的原 生和混 合应 用程序 在一 个Android操作系统版本上的性能进行了比较分析。Delía等人[4]对原生开发的移动应用程序和使用多平台解决方案开发的移动应用程序的性能进行了比较分析。作者重点讨论了原生应用程序的实现时间,以及同时为许多平台创建移动应用程序的不同方法。然而,这不是我们文章中提出的方法。在其他出版物中,性能的比较-例如Android原生开发工具包(NDK)与[5,6]-被做了。作者进行了各种测试,例如数值计算(包括Ackerman递归函数),排序(Hash,Hash2),嵌套循环,随机数生成和字符串操作通常,使用这样一组测试是有意义的,但在我们看来,它们并不能完全反映使用移动应用程序时最常见和最相关的Pulasthi和Gunawardhana [7]询问哪种技术更适合移动应用程序开发,但他们没有像我们一样真正关注性能。Carvalhoi和Freire [8]以类似的方式提到了这个主题,即技术在功能方面的地位。 Que在比较中走得更远等人[9],分析了Nunkesser和作者[10]工作中的原生和混合技术的范例以及分类法,确认了考虑这些技术的重要性。在工具和目标系统的选择方面,本地和混合应用程序开发的比较领域中的有趣论文强调了从选择技术的决策角度来看,这种选择[11,12]或框架[13]或工业应用[14]的系统限制的知识是多么重要。Dorfer和作者[15]关于使用混合技术对CPU、内存和设备电池的影响的工作虽然这项工作是一个非常有趣的研究,它只包含了一部分的参考,我们已经进行的主题,但它表明需要处理这个主题的硬件要求和硬件资源消耗。Willocx和作者[16]专注于移动应用程序中的一般效率问题。其他人[17然而,这不是我们在应用程序方面想要的更广泛的方法。在选择技术时可以使用的某些方面也可以在Escherec Huy [21]和Jobr [22]中找到。Kho'i和Jahid [ 23 ]以及Elskowic [ 24 ]提出了另一种有趣的方法来比较我们分析的技术,但他们关注的在分析最新技术的过程中,在决定进行我们的研究之前,我们还发现了一些有趣的研究,这些研究展示了如何将原生技术中的应用迁移到混合技术[25],以及将这两个世界结合起来的可能性[26,27]。虽然这些都是非常有趣的文章,但它们根本没有涉及我们感兴趣的内容,能源2022,15,45743月20日节能项目。即使在Chandi等人提出的创建移动应用程序的实际方法中。[28],我们的问题也没有提到。人们可以找到许多论文,其中作者通过分析性能方面和功能限制来分析基于Web的应用程序(这是混合应用程序的一个子集),这些限制也以某种方式影响混合解决方案[29那些处理用户体验方面和应用程序功能问题的人是这种类型工作的一部分我们可以提到El-Kaliouby等人。[35],他处理了UI方面的代码转换,以及特定门户[36]或特定应用程序[37]的技术迁移,以及用户界面方面的进一步分析[38]。Oliveira等人。[39]想知道在能源消耗方面是在本地还是在网络上创建应用程序。这是对讨论这种选择有多重要的另一个贡献。然而,这种方法不包括我们的情况,即,混合技术的使用。Wilcox等人[40]在性能方面分析了开发移动应用程序的策略。Zhou甚至在在线实验中展示了原生解决方案的使用,只是使用了移动应用程序,在这种情况下使用了React [41]。其他作者考虑了移动应用程序中跨平台应用程序功能的改进[42],提到了渐进式应用程序对本地解决方案的替代[43],并更详细地关注了在混合版本中使用基于Web的应用程序的实际可能性[44]。所有这些描述的解决方案都强调并显示了分析所述技术的技术差异的重要性。然而,不管引用的所有出版物,必须明确指出的是,没有一个团队专注于我们为我们的需求制定虽然它们是出于我们的需要,但其结果肯定会完美地补充这一领域的知识基础。本出版物中的测试通常是指所选应用类型的质量我们的团队还对各种技术进行了比较研究,以便在规划分析和收集传感器网络数据的应用程序时能够选择最佳解决方案[45]。在我们的案例中,这是非常重要的,因为智能手机是我们一些医疗项目中支持传感器网络的基础,在这些项目中,大量的传感器安装在患者此外,应用程序还应与同样基于BLE信标的外部传感器网络(图1)进行通信。图1. 项目数据传输布局。能源2022,15,45744月20日这是我们项目中使用的架构的一种非常示意性和通用的方法,特别强调BLE和Wi-Fi等设备,这些设备在我们的解决方案中存在功耗问题,必须考虑其能源消耗的优化。通过Wi-Fi进行通信,提供用于分析的数据,并通过BLE信标进行通信,以定位患者。尽管使用低能耗BLE和Wi-Fi模块本身,但处理时间以及通信传感器的能源消耗非常重要。众所周知,如果处理花费较长时间,则可能导致溢出和更高的能量消耗,例如,信标.同样,中央单元本身的资源的更大消耗可能导致延迟,并且因此也导致额外的能量损失。这就是为什么根据项目的具体情况选择正确的编程技术如此重要。因此,在对从传感器接收的数据的反应必须快速或甚至立即的情况下,不仅具有适当精度和速度的传感器很重要,而且应用程序不能引入意外的延迟。 根据根据我们以前项目的经验和与其他团队的讨论,编程技术的选择通常基于主观感受和习惯,甚至归结为实现一种语言,因为有人事先知道它。我们的研究是在对前面提到的医疗项目进行学术研究的过程中产生的,它使我们有机会根据本文中描述的非常具体的参数,根据要求,对移动应用程序技术进行适当的选择。这篇文章的突出贡献,以及实际上作为其写作基础的研究,是进行比较,为我们提供一个答案,即哪些选定的技术更适合在资源边缘工作的情况下创建应用程序,特别是在能源使用方面由于在我们的解决方案中,我们经常使用传感器网络,这些网络必须通过Wi-Fi或BLE模块与收集和处理数据的应用程序进行通信,因此我们希望检查如何在能源方面优化我们的项目。如图1所示,在有许多此类来源的情况下,通常具有有限的电源,这些技术中的每一种的能源效率差异对于系统的适当寿命及其可靠性可能是至关重要的。在我们的文章中,我们展示了我们研究的基础。结果本身,连同讨论的结果,也是有用的人谁可能还没有想到这一点时,寻找其他地方的节能我们在设计传感器网络和创建应用程序的边界上的经验 使用适当的应用技术模型来获得此处的能量产量。在某些情况下,这种优化甚至可以决定整个项目的有效性,或者由于所获得的节省,在选择更便宜的系统组件时可以简单地降低成本在描述该领域的现成解决方案时,我们表明,首先,该主题很重要,因为已经进行了此类技术的比较;同时,我们表明,到目前为止,还没有人在减少资源负担方面对这些技术进行比较,从而减少能源消耗。我们的编程和设计经验产生了这个想法,其结果已成功地在我们的各种项目中实施我们已经提出了一个论点,即选择技术来编写应用程序可以减少应用程序运行的设备资源上的负载,同时具有可接受的数据处理水平。这反过来,在没有额外证据的情况下,将减少系统组件的能源需求例如,较短的处理时间意味着与系统组件的较短的通信时间,并且因此意味着当它们必须以增加的或最大水平的能量消耗操作时较因此,与表面相反,文献中较少的参考文献并不是一个缺点;它证明了我们的方法的创新性我们的比较本身并不是它是为了一个特定的目的而设计的:能源2022,15,45745月20日通过选择适当的技术来减少能源消耗,从而减少系统的能源消耗2. 背景和技术描述2.1. Android系统虽然似乎每个人都知道Android是什么,因为他们的手机里有它,但有必要说几句关于它的受欢迎程度。由于其发展的历史悠久,导致了很大的灵活性和越来越多的新版本,这也是优化系统本身的一个很好的机会。更重要的是,这种普及意味着该系统也可以在许多设备上找到,不仅是电话,而且还有电视机或冰箱等日常设备。这一切促使我们选择这一制度来分析本文所提出的问题。Android诞生于2003年。Android公司成立于美国。其创始人的主要座右铭是开发智能移动设备两年后,该公司被谷歌收购,谷歌开始开发自己的移动设备和移动系统。他们在2008年推出了他们的第一款Android智能手机,但它并没有彻底改变市场。Android的第一个版本安装了一些默认应用程序。自该系统开始以来,已经发布了许多改进每个版本都提供了新的可能性,并优化了硬件操作,用户界面,最重要的是安全性。由于谷歌的大力支持,Android已经成为移动设备和更多的最重要和最流行的2.2. 原生应用程序与混合应用程序本机应用程序是为移动终端的特定操作系统创建的。 在Adroid的情况下,这是Java或Kotlin [47]。 对于IO,这是Swift或Objective-C。 作者准备了工具,使他们能够为这些系统构建应用程序。由于上述语言和用户界面元素的差异,移动应用程序通常以两个版本实现。原生应用有其自身的优势,主要包括运行速度快、效率高、更容易访问移动设备的传感器和模块(例如,加速度计和GPS)。它的优势还在于更容易在应用商店中分发这些因素尤其鼓励全球出版商在更高级的应用程序中选择本地解决方案混合应用程序使用WebView组件。因此,该应用程序结合了Web应用程序和本地应用程序的优点。 结构 这种应用的基础是具有界面元素的HTML(超文本标记语言)、具有元素样式定义的CSS(层叠样式表)、以及具有用于处理特定事件和用户动作的代码的混合应用可以在移动设备的各种操作系统上运行这样就不必在每个系统上分别实现应用程序。上面提到的为多个平台构建一个项目的选择有很多优点,特别是财务成本的削减(程序员数量减少,许可证和测试设备成本降低)和时间(这导致发布应用程序的速度更快混合应用程序也可以访问设备模块,但它们需要外部插件才能实现这一点。用户界面是以一种更简单的方式构建的;但是,使用适当的样式定义可以帮助实现与本机应用程序非常相似的效果对于那些简单易用的移动应用程序的创建者来说,混合应用程序可能是一个更好的解决方案,因为这些应用程序的功能并不太基于设备模块。这些差异的简要总结见表1。能源2022,15,45746月20日表1. 混合技术和原生技术之间的差异总结。混合应用程序原生应用程序•离线操作能力优势缺点更便宜的开发过程-节省资源(两个平台的一个代码意味着使用一个开发团队)•轻松的应用程序分发•内置Web浏览器•支持内置设备功能通常比本机应用程序的性能更慢,代码并不总是编译为应用程序•JavaScript生态系统•定制化程度较低的用户体验更好地使用所有设备功能(如推送通知、传感器、摄像头)的可能性创建的功能清晰的代码架构现代语言的使用(例如,Swift、Kotlin),易于开发•更好的测试工具(更容易的错误检测)由于硬件差异,开发过程成本高昂维护和应用程序维护成本2.3. Java 8与Kotlin近年来,Java在最受欢迎的编程语言中的地位一直很高Java的历史始于1995年,由Sun Microsystems的James Gosling创立。Java目前最重要的用途之一是为Android系统开发移动应用程序。Java 8可用于构建可在Android 7.0上运行的移动应用程序或更新的版本。在这个版本的Java中,作者引入了只包含一个抽象方法的函数接口。它们通常有特定的目的,例如,使用test()方法进行谓词,根据给定的参数检查expression的逻辑值,或者使用compare()方法返回两个变量的比较结果函数式接口经常在lambda表达式中使用,它缩短了匿名函数的代码,简化了集合的迭代和过滤元素。方法引用也是Java 8中的一个新特性,经常在lambda表达式中使用。还有流API-流允许更有效地对集合执行操作。接口现在可以包含静态和默认方法。作者还添加了新的日期和时间API。还应该提到新的Optional类-它的目的是防止NullPointerException的发生Java 8中的新特性受到程序员的普遍赞赏。由于这些变化,用这种语言构建应用程序似乎要容易得多此更新它被认为是Java历史上最重要的事件。开发人员对Java 8中的新改进表示赞赏。这些变化促进了开发过程,在开发环境看来,这使得Java 8成为有史以来最重要的更新。Kotlin是另一种可能应用于原生移动应用程序项目的编程语言。它由JetBrains开发,基于Scala语言。2017年,谷歌宣布Kotlin作为Android系统的官方编程语言,两年后它被列为首选语言。由于Kotlin可以运行用Java编写的代码,许多Java程序员决定将他们的项目迁移到Kotlin。Kotlin具有面向对象和函数式编程语言的特性它是一种静态类型的语言;因此,在编译过程中可以发现许多错误它的作者声称用Kotlin编写的代码应该比用Java编写的代码短40%,即使在最简单的项目中也可以注意到这一点这也意味着用Kotlin编写的代码应该有更高的质量。与Java语言相反,该代码不需要插件。显著的代码减少是具有数据属性的类的效果(字段及其值定义在一行中)。最重要的一········能源2022,15,45747月20日优点是避免NullPointerException的一种更容易的方法,特别是由于可空和不可空类型,以及由于一个名为Elvis操作符的操作符检查值的null安全性。由于延迟加载特性,Kotlin应用程序的启动时间很短。许多程序员喜欢扩展函数,因为它可以为现有的类和库带来新的功能与Java 8类似,Kotlin允许使用集合和流API,甚至以更灵活的方式。Kotlin是一种跨平台的语言,因此它可以应用于不同目的的项目。Kotlin内置的移动应用程序也可以在iOS上运行。它可以用于后端和前端应用程序。Kotlin这种编程语言仍然是趋势,可能很快就会在流行度方面超过Java。2.4. Ionic框架Ionic于2013年底作为Web用户界面框架发布[49术语Ionic的第一个版本基于AngularJS平台,用于创建Web应用程序。Ionic作者的主要座右铭是在快速增长的移动应用领域提供免费编程工具革命性的Android第二版对Ionic的下一个版本产生了重大影响Ionic 2和Angular 2都基于微软设计的TypeScript编程语言。TypeScript是JavaScript的超集,这种语言的编译包括将代码简单地翻译为JavaScript。TypeScript中的变量需要类型化,这是这种语言与JavaScript之间最重要的区别之一程序员也可以创建类(也包含可选字段)。一个有趣的选择是可以进行类型的组合、联合和别名用TypeScript编写的代码应该比JavaScript更容易阅读,更不容易Ionic应用程序基于模块化项目结构。模块是一组相关的组件,负责特定的功能。一个组件包含一个TypeScript文件,其中包含处理事件和用户操作的代码,一个HTML文件,其中包含用户界面元素的定义布局,以及一个CSS文件,其中包含样式定义。组件可以由其他组件构建。服务在向组件提供一些重要功能方面起着至关重要的作用,特别是在通过HttpClient模块与服务器通信时。Ionic使用Apache Cordova插件。因此,可以访问设备和传感器,例如,摄像头和加速度传感器但是,这并不限制其他第三方插件的使用3. 材料和方法为了比较混合和原生Android应用程序,开发了两个版本的移动原生版本是在Java 8中创建的,混合版本是使用Ionic框架创建的。对这些应用程序的效率和执行情况进行了几次测试。3.1. 测试应用开发的应用程序使得有可能在观察到的固定和在线商店中发布和审查促销活动。应用程序需要满足以下要求:所有交易的概述和单个交易的标题,作者的昵称,促销前的价格,促销后的价格,分数(用户投票的差异·能源2022,15,45748月20日•选择顶级或最新的交易;•通过用户本地化或搜索短语过滤促销•检查汇率;•注册;•用户登录•添加和修改交易;•评论一笔交易;•投票赞成一项协议;•检查用户简档;•修改用户数据。应用程序还应该具有用户友好的界面,易于使用,并在各种尺寸的设备上正确工作。它应该与API快速通信,并且应该在没有任何中断的情况下处理数据。应用程序需要在其部分之间有流畅的过渡。此外,它的项目应该是可扩展的,易于程序员管理3.2. 试验台移动应用程序和服务器应用程序都是在PC上设计、实施和构建的,具有以下规格:•CPU:Intel i5-2520M 2.5 GHz;•RAM:8 GB(双通道,1666 MHz);•硬盘:120 GB SSD;•操作系统:Windows 7 64-bit.测试的应用程序在模拟的Android虚拟机上运行,规格如下:•型号:Google Pixel 2XL;•CPU核心:2个;•内存:1GB;•操作系统:Android 8.0.3.3. 比较假设:项目结构首先,对两个项目的结构进行了比较。这种比较是基于包含源代码的目录和文件的数量数据是在分析两个项目在操作系统中的属性后获得的3.4. 比较假设:构建时间在Android系统中构建移动应用程序包括编译源代码和创建APK(Andoid PackageKit)文件。正是该文件允许在给定的移动终端上进行安装。在两个应用程序的构建过程之后,在终端中检查时间3.5. 比较假设:跑步在移动应用程序中,运行速度至关重要。它在模拟设备上测试过。首先,根据日志检查启动应用程序的时间。总时间包括进程的启动、对象的初始化、Activity的创建和初始化、布局的初始化以及应用程序的显示此外,还对应用程序元素之间的转换进行了测试。这个操作元素的速度提高了应用程序界面的使用。在控制台中检查从用户配置文件视图转换到登录屏幕的时间此外,本文还展示了从REST API下载的数据处理时间的测试结果。这对于正确构建响应式移动应用程序至关重要对于本机应用程序,本文作者使用了能源2022,15,45749月20日Retrofit库,由于在代码中使用适当的注释和处理错误,它大大简化了这个过程Ionic中内置的应用程序具有负责此通信的HttpClientModule。它还提供错误处理和将数据转换为给定对象。此外,它允许对数据流和可观测数据进行操作时间是在两面旗帜之间计算的这是发送请求的时刻,也是带有REST API的服务器在本地运行。3.6. 比较假设:硬件资源并对硬件资源的使用情况进行了测试如今,移动设备具有千兆字节的操作内存和存储;因此,这不是最重要的因素。尽管如此,程序员需要避免内存泄漏和应用程序挂包。统计数据在模拟智能手机的开发者选项中进行了检查。3.7. 比较假设:代码还比较了两个项目中的源代码数量一般来说,拥有更少的代码对可读性和可维护性有积极的影响;而且,它通常可以让程序员节省更多的时间。分析给定文件中的代码行3.8. 比较假设:外部库多个移动应用程序项目使用来自外部库的依赖项。它们通常是免费使用的,并且具有开放源代码,帮助程序员构建他们的应用程序并应用在测试的应用程序中,有几种第三方库的用法。对它们的安装方法进行了比较。3.9. 比较假设:用户界面本文作者还比较了用户界面的实现。按钮、标签和输入等元素通常用于移动应用程序中,并比较了它们的可用性。并对最终设计方案进行了分析。3.10. 比较假设:本地有时,移动应用程序需要将其数据存储在本地内存中。例如,这可以是关于当前登录用户的信息。测试的应用程序存储JSON Web Token,负责用户授权。比较了存储这些数据的方法3.11. 比较假设:传感器移动设备由许多重要的模块组成,例如相机和GPS。如前所述,原生应用程序可以直接访问这些模块,而混合应用程序则依赖于附加插件来处理来自这些模块的数据测试的分析了获得这些数据的方法3.12. 比较假设:文档和支持从程序员不可否认,在移动应用程序开发过程中可能会出现一些问题,程序员可能无法自己解决这些问题。对文件和支助的提供情况进行了比较。4. 结果4.1. 项目结构原生应用程序项目具有标准的Java项目结构。在Android Studio环境中使用项目向导,可以创建一个简单的应用程序,能源2022,15,457410月20日轻易默认结构主要基于src/main/java(存储Java代码的目录)和src/main/res(包含具有定义的布局,图像,图标,菜单,样式,颜色或标签的文件)。在Ionic框架中构建的混合应用程序的结构与在Angular中创建的项目非常相似,Angular是最流行的Web应用程序框架之一关键文件存储在src目录中,包括作为起始页的index.html、具有全局样式定义的global.scss和具有应用程序初始加载代码的main.ts所有静态资源都存储在src/assets中。模块及其组件和服务在src/app中可用。组件被分组到单独的目录中。图2显示了关于这两个项目的结构的数据,其中不包含在构建过程中生成的文件或与特定开发环境相关的文件这两个项目使用的磁盘空间都非常少。 混合应用程序项目有更多的文件和更少的目录。这可能与所提到的将组件分组到单独的目录中有关。这些项目的结构非常轻,可以很容易地存储在存储库中。(a)(b)第(1)款图2. 项目结构:(a)项目的磁盘空间;(b)文件和目录的数量。很明显,如果您可以限制文件的数量和磁盘空间的使用,这可以减少设备为应用程序本身所需的内存资源这意味着,在不增加设备成本的情况下,更多的磁盘空间或存储器保留用于缓冲从传感器接收的数据。4.2. 构建时间对于原生应用程序,此过程由Gradle执行。在顶部菜单的Build部分中选择MakeProject或Build APK(s)选项后,它可能会在Android Studio IDE或者,程序员可以执行命令gradlew leRelease。在Ionic中构建混合应用程序是由Node.js平台提供的节点包管理器(NPM)管理的。为了准备APK文件,需要执行两个命令:ionic cordova buildandroid和cordova build android。如图2所示,构建混合应用程序的平均速度是构建本机应用程序的两倍(图3)。在更高级的项目中,这种差异可能能源2022,15,457411月20日图3. 平均建筑时间所获得的结果与该技术特异性所产生的假设一致。从应用程序本身的角度来看,它们并不重要- 但在创建项目时,以及可能在实现后续更正时,它们是至关重要的。4.3. 运行速度本机应用程序启动时间更快(表2)。这可能是因为混合应用程序必须加载大量脚本。时间相差大约一秒,这在用户启动应用程序时可能会很明显。表2. 启动应用程序所需的时间。试验次数开始时间起动时从用户配置文件视图到登录屏幕的转换时间如表3所示。在原生和混合应用程序中,过渡非常迅速。然而,在一开始加载脚本之后,混合应用程序在过渡中稍微好一点.表3. 在用户配置文件和登录屏幕之间转换所需的时间。转换的测试次数过渡时间本地应用程序混合应用程序测试11.3592.682测试21.2762.357测试31.2372.366测试41.2242.247平均1.2742.413本机应用程序[ms]混合应用程序[ms]测试1174.050.0测试2176.043.0测试3156.033.0测试4206.036.0平均178.040.5能源2022,15,457412月20日来自REST API的处理数据如表4对于混合应用程序,它处理数据的时间越长,数据就越多。原生应用程序显然在这里获胜。表4.从REST API处理数据所花费的时间(10个对象的响应)。处理数据的测试次数处理数据的时间表5. 处理来自REST API的数据所花费的时间(50个对象的响应)。处理数据的测试次数处理数据的时间表6.从REST API处理数据所花费的时间(100个对象的响应)。处理数据的测试次数处理数据的时间在启动本机应用程序时,混合应用程序输给了本机应用程序这可能会影响远程重启情况下的系统操作然而,已经在加载时,在混合应用的情况下的跨工厂运输为其提供了优势,这从系统操作的角度来看更加重要。应用程序重启很少发生,用户进程中标签之间的自然移动当然,这会影响对应用的访问时间,从而影响通信系统组件的能量消耗。表4数据负载、处理时间有利于本机应用程序,这是预期的。然而,另一个重要的观察结果由此而来:对于少量数据,处理时间几乎相同。这意味着,当我们处理的系统中,数据是在较大的时间间隔,并在一个小的体积接收,实际上没有这些技术之间的区别,这反过来又与其他优势的混合应用程序导致的结论,它是更好地使用这种技术。4.4. 硬件资源在这两种情况下,可以观察到应用程序不会占用大量磁盘空间或RAM,如图4所示。这当然可以根据具体应用而有所不同。然而,重要的是,混合应用程序需要更多的这些资源。这意味着原生应用在Android系统中有更好的优化。本机应用程序[ms]混合应用程序[ms]测试139.075.0测试235.047.0测试329.077.0测试439.069.0平均35.567.0本机应用程序[ms]混合应用程序[ms]测试150.0158.0测试242.0173.0测试351.0138.0测试457.0173.0平均50.0160.5本机应用程序[ms]混合应用程序[ms]测试178.00277.00测试258.00238.00测试372.00245.00测试449.00222.00平均64.25246.25能源2022,15,457413月20日图4. 硬件资源的使用。减少硬件资源的使用应被理解为通过使用更便宜的组件可能降低系统开发成本,但从能源效率的角度来看也至关重要占用的资源越少,为系统供电所需的能量就越少,从而在能量资源的边缘工作为优化4.5. 代码量本机应用程序项目包含XML(可扩展标记语言)文件,其中包含布局定义和应用的样式(大小、颜色、边距、填充等)。混合应用程序项目包含带有用户界面组件的HTML文件和带有样式的SASS文件。HTML文件可能包含变量、循环和条件块,这有助于避免不相关的重复并减少代码量(参见图5a中的比较)。此外,在Ionic中构建的项目在包含控制器(事件处理和业务逻辑)和数据模型的文件中的代码要少得多(如图5b所示)。与原生应用程序相反,不需要定义表示用户界面元素的对象和数据模型的getter/setter。数据绑定为混合应用程序项目提供了灵活性和可读性。总之,开发和维护混合应用程序应该比本机应用程序更容易。从应用程序操作的角度来看,代码量似乎微不足道一方面,获取功能所需的代码量这会影响系统开发的速度和成本,但也会影响资源消耗,从而影响与能源优化相关的问题。在这种情况下,混合方法显然是赢家。能源2022,15,457414月20日(a)(b)第(1)款图5. 源代码的数量:(a)控制器文件;(b)具有布局定义的文件。4.6. 外部库原生应用程序依赖于JWT(用户授权)、ButterKnife(更简单的用户界面元素管理)、Retrofit(与REST API通信)和Glide(图标和图像操作)等库。混合应用程序有更多的默认库(通常连接到Angular,Ionic和Apache Cordova);然而,它们足以满足测试应用程序的要求。在这两种情况下,使用第三方库都非常容易,因为只需将给定库的名称和版本号添加到适当的文件(build.gradle或package.json)并执行特定的命令(gradlewbuild或npm install)。在这种情况下,应该简单地说,这主要影响到软件工程和有关支出。4.7. 用户界面原生应用程序可以直接访问Android系统中可用的所有用户界面组件内置于Ionic中的混合应用程序可以使用多个元素,这些元素的用途与原生应用程序中的几乎相同(参见表7中的比较)。这意味着移动应用程序的最终设计在两种情况下可能非常相似(如图6所示)。因此,用户界面不应该成为在本机应用程序和混合应用程序之间做出选择的决定因素。可以看出,无论选择本研究中讨论的技术,视觉效果都是相似的。这是一个非常重要的前提,考虑到在其他方面你应该选择一个混合版本,你这是非常重要的。表7. 用户界面组件。目的Native组件组件提供Ionic标签TextView离子标记输入EditText离子输入按钮按钮离子钮浮动按钮浮动按钮离子工厂按钮从列表中微调器离子选择能源2022,15,457415月20日图6. 用户界面(交易列表)在(左侧)本地应用程序和(右侧)混合应用程序。4.8. 本地存储数据本机应用程序使用SharedPreferences对象来包含键值对,并使用Editor对象来修改它们。混合应用程序可以读取和更新LocalStorage,这通常在Web浏览器中使用。在这两种情况下,存储本地数据都很简单,而且很相似。4.9. 传感器的使用在混合应用程序的情况下,两行源代码足以估计地理坐标。看起来令人惊讶的是,在本机应用程序的情况下,更难找到用户本地化有必要创建一个实现LocationMonitor接口和方法的类,以检查特权和处理此数据的可能此外,地理定位不如在混合应用中准确因此,在讨论原生和混合移动应用程序时,使用来自设备模块的数据并不是一个强有力的如您所见,在混合解决方案中,从传感器获取信息所需的代码量越少,处理和存储代码所需的资源量就越少但是,在第4.5节中对此进行了评论。能源2022,15,457416月20日4.10. 文档和支持Android系统和Ionic框架在网上发布了详细的文档。由于存在多个教程,因此很容易开始开发移动应用程序项目。更重要的是,许多IDE为程序员提供了有用的工具原生和混合应用程序程序员都活跃在StackOverflow等论坛上,StackOverflow是程序员相互帮助解决共享问题的最受欢迎的平台之一。关于Android系统应用程序构建的大量问题显示了超过一百万个问题与Android有关 [48],数万个问题与Ionic框架有关[51]。这证明了混合应用程序仍然远不如原生应用程序受欢迎;然而,它们的受欢迎程度应该仍在增长。5. 讨论所进行的研究证实了我们的一些假设,但也回答了关于技术选择的问题,选择导致的某些妥协如何表8总结了从试验中收集的信息。表8. 根据所进行的研究,测试技术的优点和缺点。比较混合应用程序原生应用项目结构更多文件和磁盘占用减少文件和磁盘占用构建时间慢快两倍运行启动应用程序慢快两倍运行过渡速度甚至快慢Rest API慢2倍的速度,并且由于响应对象的数量而增长硬件资源使用更少20%左右代码的数量小二倍更代码文件甚至少更外部库同样,这取决于设计同样,这取决于设计用户界面同样,差异通常是同样,差异通常是本地存储在两种情况在两种情况内部传感器所需更复杂支持和支持不太受欢迎,但正在增长更受欢迎项目结构在一开始就进行了比较,两者之间的差异是相当不相关的。文件和目录的数量以及占用的磁盘空间非常相似;因此,这些不能作为此比较的重要标准。在开发过程中应考虑构建时间。进行的测试表明,构建本地应用程序的速度是原来的两倍。然而,由于实时重建过程,第一次构建时间并不是非常关键。一般来说,最重要的因素是跑步的速度。用户通常喜欢响应迅速的应用程序。原生应用程序的优势似乎非常明显。对于只想使用应用程序几秒钟的用户来说,启动时间快一秒是至关重要的此外,在大多数应用程序中都会处理来自外部源的测试是针对简单物体进行的,其数量不超过100个。原生应用程序比混合应用程序快四对于更先进的物体和更多的物体,差异可能更大。能源2022,15,457417月20日如今,移动设备的效率正在迅速提高。这并不意味着资源的使用对开发人员来说不重要。测试表明,混合应用程序使用的RAM和磁盘空间略多在更高级的项目中,差异可能对于较简单的应用程序,这个因素是无关紧要的(假设应用程序不会导致内存泄漏)。用户界面可以以非常相似的方式实现。Ionic内置的应用程序具有与本机组件相同的用途。两个应用程序的屏幕截图显示了几乎相同的布局。这意味着在选择本机应用程序和混合应用程序时,用户界面实
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功