本文跟大家探讨下app的下载功能,也让大家更直观的理解功能和场景之间密不可分的关系。

目的

下载功能在app中十分常见,比如:腾讯视频app的视频缓存到本地、百度网盘的下载、手机软件更新的下载等等。很多情况下文件下载都是批量的,比如下载电视剧,软件批量更新。看似简单的一个功能其背后却有许多的逻辑需要产品经理去思考。所以今天探讨下app的下载功能,也让大家更直观的理解功能和场景之间密不可分的关系。

为了让阐述更直观,我们从一个场景开始我们的探讨。

用户场景

星期天的下午,小新躺在沙发上享受惬意的休息时光。他打开了某某app,依次点击下载A、B、C、D四个文件,打算好好利用剩余的休息时光。

排除下载异常和下载完成两种情况,正常情况下这四个下载任务的状态有三种:下载中、等待中、已暂停;且系统限制,只能有一个文件处于“下载中”的状态,其余文件需要处于“等待中”或“已暂停”。

假设此时A处于“下载中”,B、C和D处于“等待中”,如下图:

当小新点击任务A和任务B时,你觉得ABCD四个任务的状态会怎么变化?不妨停下来思考下,或者我们用一款app来具体研究下,这里就选择爱奇艺视频吧。

爱奇艺视频app逻辑

  • 当第一次点击A时,A变为“已暂停”,B变为“下载中”,C、D变为“等待中”,四者的优先级为:B>C>D>A;
  • 当第二次点击A时,A变为“下载中”,B、C、D变为“等待中”,四者的优先级变为:A>B>C>D;
  • 当第三次点击B时,A变为“下载中”,B变为“暂停”,C、D为“等待中”,四者的优先级为:A>C>D>B;
  • 当第四次点击B时,A为“下载中”,B、C、D为“等待中”,四者的优先级为:A>B>C>D。

如下图:

这种逻辑其实在app中是比较常见。尤其是视频类软件中(比如腾讯视频、爱奇艺视频)。因为在这一类软件的使用过程中,大多数用户高频出现的使用场景是下载连贯性的任务,且任务与任务之间有很强的优先级排列(比如下载电视连续剧,一般先下载的肯定是靠前的剧集,这也迎合了它边下边看的功能,再者倒着看电视剧的人确实很少),所以只要是在下载进程中,先添加的任务总会优先于后添加的任务下载。

这样设计功能更贴近实际的用户场景,也让用户更容易学习和理解。当然,功能的逻辑也并非一成不变的,如果这里小新打开的是百度网盘app,便会是如下另外一番景象了。

百度网盘app逻辑

  1. 当用户第一次点击A时,A变为“已暂停”,B变为“下载中”,C、D变为“等待中”,四者的优先级为:B>C>D>A;
  2. 当第二次点击A时,A变为“等待中”,B变为“下载中”,C、D为“等待中”,四者的优先级为:B>C>D>A;
  3. 当第三次点击B时,A为“等待中”,B变为“已暂停”,C变为“下载中”,D为“等待中”,四者的优先级为:C>D>A>B;
  4. 当第四次点击B时,A、B为“等待中”,C变为“下载中”,D为“等待中”,四者的优先级为:C>D>A>B。

如下图:

对比上面爱奇艺app图表,我们可以看出功能背后的逻辑发生了很大改变。因为在百度网盘的用户使用场景中,大多数情况下,批量下载的内容都是比较独立的单位,彼此之间并没有很强的优先级,用户点击任务最主要的目的是确定是否下载任务,而非优先下载该任务。

所以开发者认为依据下载任务触发时间的先后排列优先级,更贴近用户场景,同时又减少了对“下载中”任务的干扰,减少“下载中”任务的中断率也就一定程度上提高了下载效率,而对于该软件的用户体验度而言,下载效率绝对是一个重要指标。

总结

通过上面针对下载功能在不同app中的逻辑的对比,我们不难看出,一个功能背后的逻辑设计其实有很多种,而且我们很难定义哪种逻辑正确与否,但我们可以看出哪种逻辑更贴合当下场景。

我们在设计功能背后的逻辑时,一定要深挖实际的用户场景,选择最贴合大概率或高频场景的逻辑。

还是那句话:没有最好的功能,只有最合适的功能!

本文由 @追梦人 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

c++ 暂停功能_app下载功能背后的逻辑相关推荐

  1. ssm上传文件获取路径_SSM实现图片上传下载功能

    0. 基本步骤框架搭建 实现带图片上传的注册功能 实现下载功能 1. 框架搭建 Step1 创建开发项目 创建基础MVC包结构:controller.service.mapper.pojo Step2 ...

  2. android多线程下载原理,安卓多线程断点续传下载功能(靠谱第三方组件,原理demo)...

    一,原生的DownloadManager 从Android 2.3(API level 9)开始,Android以Service的方式提供了全局的DownloadManager来系统级地优化处理长时间 ...

  3. iOS 下载功能(断点续传)

    思路步骤: 1.文件的存放 1.1 如果正在下载,放在temp+名称文件下; 1.2 如果下载完成,放在cache+名称文件下. 1.3 这里名称参考SDWebImage里面,使用MD+URL来命名, ...

  4. Java和vue实现音乐播放器_vue实现的网易云音乐在线播放和下载功能案例

    本文实例讲述了vue实现的网易云音乐在线播放和下载功能.分享给大家供大家参考,具体如下: 效果如图: 完整代码: Document html, body { height: 100%; padding ...

  5. 极客日报:百度网盘青春版将不限速;Bing在中国内地暂停“搜索自动建议”功能30天;新款iPhone SE将支持5G

    一分钟速览新闻点! 腾讯公司旗下App开始恢复更新 雷军生日米粉祝早日退休 百度网盘青春版即将内测:不限速,数据可互转 金山办公发布全新品牌Logo:一面迎风飘扬的旗帜 首次!龙芯处理器成功运行开源鸿 ...

  6. 教你如何实现c#文件上传下载功能

    简单介绍一下c#文件上传下载功能实现. NuGet 安装SqlSugar Model文件下新建 DbContext 类 public class DbContext {public DbContext ...

  7. silverlight 类似百度的图片浏览器,视频播放,附件下载功能,全部后台程序。...

    #region =========图片点击按钮================String[] nr = new String[7] { "房屋照片", "房屋所有权证& ...

  8. spring4新功能官方下载地址

    2019独角兽企业重金招聘Python工程师标准>>> http://hi.baidu.com/tianhuimin/item/68de178051bd3a874414cf25 20 ...

  9. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

最新文章

  1. 如何成为一个Android高手
  2. webpack4升级指北
  3. MATLAB实现图像平移的源代码
  4. 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
  5. 提取点的dn值_干货在线 | DEM数据如何生成高程点
  6. js调用php和php调用js的方法举例
  7. 前端学习(2341):jsx的本质
  8. 关于ASCII字符的那些事儿
  9. 对数据库设计的一点感想
  10. 动态扩容Linux根目录 (解决/dev/mapper/centos-root 占用了过高问题)
  11. oracle 导入性能,EXP,EXPDP数据导入本地性能测试的一点心得
  12. matlab寻找频谱峰值,如何得到明显峰值的频谱图?
  13. WebSocket实现聊天功能
  14. Java方法中参数String...你需要知道的事
  15. 成功解决 MDK5中No ST-LINK detected的问题
  16. 六年如逆旅,我亦是行人 ——一个顾问的六年安全从业经历
  17. CVPR 2021 华南理工和微信的Transformer:UP-DETR无监督预训练检测器
  18. redis 的6种过期策略
  19. 定时关机系统~~开整
  20. 牛客笔试OJ-在线编辑器输入输出总结

热门文章

  1. 妙招避免网络IP地址被非法修改
  2. kali linux 安装 Mysql Can‘t read from messagefile 报错解决方案
  3. 怎么解决svn清理失败且路径显示乱码问题
  4. python解决鸡兔同笼问题
  5. 通常,Node.js如何处理10,000个并发请求?
  6. 如何在Python中将字典键作为列表返回?
  7. 删除目录下大量小文件和清空大文件
  8. 交通运输部部长李小鹏谈及自动驾驶:包容失败、反对垄断,力争在国家层面出台指导意见...
  9. python 统计2^2^2^2^2的各数字出现次数
  10. 针对Android Tv的自定义RecyclerView2 0横竖向连动