使用APICloud开发App的性能优化探索——合理使用同步/异步接口

简介: 本文从同步/异步原理角度出发,介绍了App的优化方法,灵活使用这些方法,可以在开发App时给用户带来更好的使用体验。

本文从同步/异步原理角度出发,介绍了App的优化方法,灵活使用这些方法,可以在开发App时给用户带来更好的使用体验。
标准的JavaScript的执行分为同步和异步两种模式,APICloud的所有扩展API也同样支持同步或异步的调用,它们适用于不同的场景。
在浏览器引擎中,JavaScript引擎是单线程执行的,单线程意味着在同一时间内只能有一段代码被JavaScript引擎执行。所以JavaScript函数以一个接一个的栈方式执行,A函数如果依赖B函数的返回结果,那么A函数必须同步等待B函数返回的结果后才有执行机会。
JavaScript的同步模式符合开发人员通常的编码习惯,但性能问题也因此而起,当函数栈中某个函数的执行耗费时间过长时,将引起函数栈中后边的所有函数延迟执行,引发程序性能问题。这在移动端体验场景优先的场景下是无法接受的。
异步模式因此诞生。APICloud所有的扩展API在现有的JavaScript同步模式的基础上,引入了JavaScript CMD (Common Module Definition) 的模块化定义规范,API的调用遵循AMD(Asynchronous Module Definition)的异步方式加载,通过实现AMD规范下的JavaScript 异步加载模式,能够很好地解决性能问题。
APICloud的JavaScript异步编程模式可以总结为三个关键词:回调函数、事件监听和require。典型的代码使用如下:

    function readFile(){
        var fs = api.require('fs');
        fs.read({
            fd:'fileId'
        },printFile);
        console.log('readFile执行完毕....');
    }
    //回调函数
    function printFile(ret,err){
        if(ret.status){
            var text = ret.data;
            console.log('printFile内容:'+ text);
        }else{
            console.log(JSON.stringify(err));
        }
    }
</script>

当调用fs模块的read函数时,将进入对应原生Android和ios系统层操作,将在原生子线程中执行文件读取的操作。操作结束后,将回调JavaScript。这样做的好处在于,App不会因为读取文件大小,耗时不同而引起阻塞,如果此时设备正在进行UI渲染,将产生“卡顿”的问题,以上代码日志输出顺序为:

console.log('readFile执行完毕....');
//若干时长后,因文件大小而花费时长不一
console.log('printFile内容:'+ text);

异步的模式能够让App的逻辑功能与UI渲染很好地解耦,将耗时的操作放在多线程里执行,充分利用设备的硬件性能,使App更专注于渲染,提供更好的视觉效果及响应速度给用户。

在APP开发过程中,可以根据不同的操作场景,合理地将同步操作与异步操作相结合,编写出结构更合理、性能更出色、维护更方便的JavaScript代码。

APICloud扩展的API中,支持同步操作的api对象接口通过传入sync参数进行同步操作声明;支持同步操作的模块接口以Sync结尾。
(1)使用同步的接口获取App缓存大小,相关API调用方法的代码如下:

    function sycacheSize() {
        var size = api.getCacheSize({
            sync: true
        });
        alert('缓存大小为:' + size + '字节');
    }
    //异步调用
    function aycacheSize() {
        api.getCacheSize(function (ret) {
            var size = ret.size;
            alert('缓存大小为:' + size + '字节');
        });
    }
   

(2)使用同步接口判断偏好设置,代码如下:

    function isLoginSyc() {
        var Login = api.getPrefs({
            sync: true,
            key: 'is_login'
        });
        alert('登录状态:' + login);
    }
    //异步调用
    function isLoginAyc() {
        api.getPrefs({
            key: 'is_login'
        }, isLoginCallback);
    }
    function isLoginCallback(ret) {
        var login = ret.value;
        alert('登录状态:' + login);
    }
相关文章
|
20天前
|
Web App开发 Java 视频直播
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
对于软件、计算机等专业的毕业生,毕业设计需实现实用软件或APP。新颖的设计应结合最新技术,如5G时代的音视频技术。示例包括: 1. **短视频分享APP**: 集成FFmpeg实现视频剪辑功能,如添加字幕、转场特效等。 2. **电商购物APP**: 具备直播带货功能,使用RTMP/SRT协议支持流畅直播体验。 3. **同城生活APP**: 引入WebRTC技术实现可信的视频通话功能。这些应用不仅实用,还能展示开发者紧跟技术潮流的能力。
51 4
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
|
14天前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
40 3
|
1月前
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
38 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
|
1月前
|
编解码 Java Android开发
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
​SRT Streamer是一个安卓手机端的开源SRT协议直播推流框架,可用于RTMP直播和SRT直播。SRT Streamer支持的视频编码包括H264、H265等等,支持的音频编码包括AAC、OPUS等等,可谓功能强大的APP直播框架。另一款APP直播框架RTMP Streamer支持RTMP直播和RTSP直播,不支持SRT协议的直播。而本文讲述的SRT Streamer支持RTMP直播和SRT直播,不支持RTSP协议的直播。有关RTMP Streamer的说明参见之前的文章《使用RTMP Streamer开启APP直播推流》,下面介绍如何使用SRT Streamer开启手机直播。
53 4
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
|
28天前
|
IDE Java 开发工具
探索安卓开发之旅:打造你的第一款App
【8月更文挑战第24天】在这篇文章中,我们将一起踏上激动人心的安卓开发之旅。不论你是编程新手还是希望扩展技能的老手,本文将为你提供一份详尽指南,帮助你理解安卓开发的基础知识并实现你的第一个应用程序。从搭建开发环境到编写“Hello World”,每一步都将用浅显易懂的语言进行解释。那么,让我们开始吧!
|
20天前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
47 0
|
25天前
|
Java 程序员 Android开发
探索安卓开发:构建你的第一个App
【8月更文挑战第27天】在数字化时代的浪潮中,移动应用成为人们生活不可或缺的一部分。对于渴望进入软件开发领域的新手而言,掌握如何构建一款简单的安卓App是开启技术之旅的关键一步。本文旨在通过浅显易懂的语言和步骤分解,引导初学者了解安卓开发的基础知识,并跟随示例代码,一步步实现自己的第一个安卓App。从环境搭建到界面设计,再到功能实现,我们将一同揭开编程的神秘面纱,让每个人都能体会到创造软件的乐趣。
app开发的一些思路
<p><br></p> <p><br></p> <p></p> <h3 style="margin:0px; padding:0px; border:0px; vertical-align:baseline; clear:both; font-weight:normal; list-style:none; color:rgb(102,102,102); font-family:宋体;
2909 0
x3d
小型app开发的思路
前提: 1. 性能不是最重要; 2. 人手少; 3. 速度要快;   结论: 1. 混合式 2. 减少app的复杂程度 3. 追求性能   (博客,尽量让自己每天写一点,短一点都可以)
x3d
550 0
|
1月前
|
Web App开发 5G Linux
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
一年一度的毕业季来临,计算机专业的毕业设计尤为重要,不仅关乎学业评价还积累实战经验。选择紧跟5G技术趋势的音视频APP作为课题极具吸引力。这里推荐三类应用:一是融合WebRTC技术实现视频通话的即时通信APP;二是具备在线直播功能的短视频分享平台,涉及RTMP/SRT等直播技术;三是具有自定义动画特效及卡拉OK歌词字幕功能的视频剪辑工具。这些项目不仅技术含量高,也符合市场需求,是毕业设计的理想选择。
60 6
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP

热门文章

最新文章