首页
学习
活动
专区
圈层
工具
发布

【Kotlin 协程】Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )

文章目录 一、以异步返回返回多个返回值 二、同步调用返回多个值的弊端 三、尝试在 sequence 中调用挂起函数返回多个返回值 四、协程中调用挂起函数返回集合 一、以异步返回返回多个返回值 ----...在 Kotlin 协程 Coroutine 中 , 使用 suspend 挂起函数 以异步的方式 返回单个返回值肯定可以实现 , 参考 【Kotlin 协程】协程的挂起和恢复 ① ( 协程的挂起和恢复概念...sequence 中调用挂起函数返回多个返回值 ---- 尝试使用 挂起函数 kotlinx.coroutines.delay 进行休眠 , 这样在挂起时 , 不影响主线程的其它操作 , 此时会报如下错误...SequenceScope 类上 , 有一个 @RestrictsSuspension 注解 , RestrictsSuspension 注解的作用是 限制挂起 , 在该类中不能调用其它的挂起函数 ,...---- 如果要 以异步方式 返回多个返回值 , 可以在协程中调用挂起函数返回集合 , 但是该方案只能一次性返回多个返回值 , 不能持续不断的 先后 返回 多个 返回值 ; 代码示例 : package

13K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android单元测试框架Robolectric3.0(一):入门篇

    的使用 关于代码 1 关于Robolectric3.0 作为一个软件开发攻城狮,无论你多不屑多排斥单元测试,它都是一种非常好的开发方式,且不谈TDD,为自己写的代码负责,测试自己写的代码,在自己力所能及的范围内提高产品的质量...本文对Robolectric3.0做了简单介绍,并列举了如何对Android的组件和常见功能进行测试的示例。 2 环境搭建 Gradle配置 在build.gradle中配置如下依赖关系: ?...Android Studio的配置 1.在Build Variants面板中,将Test Artifact切换成Unit Tests模式(注:新版本的as已经不需要做这项配置),如下图: ?...最后,在测试用例中,ShadowPerson对象将自动代替原始对象,调用Shadow对象的数据和行为 ?...7 关于代码 文章中的所有代码在此:https://github.com/geniusmart/LoveUT 另外,除了文中所示的代码之外,该工程还包含了Robolectric官方的测试例子,一个简单的登录功能的测试

    2.7K30

    【测试左移专栏】用 Powermock 和 Mockito 来做安卓单元测试

    MVC各个模块通信方式如下: MVC和MVP区别: 在MVC模式中,View和Model可以直接交互;在MVP模式中,View和Model模块不能直接交互,View通过Presenter与Model间接交互...在MVC中,Controller是基于行为的,可以被多个View共享,可以负责决定显示哪个View;在MVP中View和Presenter是一对一或这一对多的,并且Presenter和View是通过接口交互的...可能有的公司需要网络代理,那这个需要根据具体情况在Gradle中配置了。...1、选取合适的测试框架 作者开始在业务中尝试使用Robolectric测试框架,初心主要在于他的特性: Robolectric Test-Drive Your Android Code Running...但在实际使用的过程中遇到了不少的坑,比如: Robolectric版本和SDK版本强依赖。

    5.6K00

    【Dev Club 分享】安卓单元测试:What, Why and How

    我们现在讲的是使用JUnit和Robolectric等其他的一些框架,写可以在我们开发环境的JVM上面直接运行的单元测试。...Mockito在github上面有2000多个mark,而JMockit只有100多个,跟Robolectric的兼容性也有问题。...关于Dagger2的介绍和使用,以及在单元测试中的运用,大家可以参考这篇文章。...使用Robolectric框架,这个框架基本可以理解为在JVM上面实现了一套安卓的模拟环境,同时给安卓相关的类增加了其他一些增强的功能,以方便做单元测试。...目前我们部门的模块,单元测试覆盖率都在50%以上 Q4:在团队开发中,怎么推广单元测试? 推广的确是个大问题,因为单元测试的好处只有实践过,才能真实的体会到。所以最好是有上面领导的支持。

    1.9K60

    Android自己主动化測试解决方式

    如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric...在应用測试中,每个activity首先会被Instrumentation初始化,然后再载入到Android模拟器或设备的Dalvik虚拟机中来运行。   ...Pivotal实验室声称使用Robolectric能够在28秒内执行1047个測试。   LessPainful将Android測试又推进了一步,它提供了一个多设备平台自己主动化測试的服务。...JML:举个样例,SAXParser在Android 2.2之前有一个bug存在于对ContentHandler.startElement的回调中,它导致应用产生错误的行为。   ...在測试执行完毕后,应用会被卸载,而手机也会被恢复到初始设置。   InfoQ:与MonkeyRunner,Robotium和Robolectric相比,你们所提供的服务有什么优势呢?

    42620

    Android单元测试框架Robolectric3.0(二):数据篇

    则是笔者这系列文章的核心内容,在我的第一篇《Robolectric3.0(一)》中已经介绍了这个框架的特点,环境搭建,三大组件(Activity、Bordercast、Service)的测试,以及Shadow...2 日志输出 Robolectric对日志输出的支持其实非常简单,为什么把它单独列一个条目来讲解?因为往往我们在写UT的过程,其实也是在调试代码,而日志输出对于代码调试起到极大的作用。...这种做法不仅仅可以在写UT的过程中使用,在开发过程中也可以使用,当服务端的接口开发滞后于客户端的进度时,可以先约定好数据格式,客户端采用模拟网络请求的方式进行开发,此时两个端可以做到不互相依赖。...由于网络请求和回调函数是在子线程和UI主线程两个线程中进行的,且后者要等待前者执行完毕,这种情况要在一个TestCase中测试并不容易。...因此我们要做的就是想办法让两件事情同步的在一个TestCase中执行,类似于这样的代码: ?

    1.5K20

    移动APP自动化测试框架对比

    Cucumber中的所有语句使用Ruby定义。 优点: 有大型社区支持。列表项 简单,类似英语表述的测试语句支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。...Android代码,然后在unit test运行的时候去截取android相关的代码调用,然后转到Robolectric实现的代码(shadow objects)去执行这个调用的过程。...Pivotal实验室声称使用Robolectric可以在28秒内运行1047个测试。...在实际应用中可以集成多个框架。 ? 基于Instrumentation的测试框架,比如Espresso,Robotium,Selendroid等,都不能支持跨APP使用。...脚本执行过程中,利用图像检索算法分析匹配当前屏幕中对应的控件,并对其应用相应的鼠标或键盘操作。这种方式使得我们在脚本编写时,既无需关心繁琐的应用程序相关 API 亦不用获取 Web 内容对象。

    6.6K101

    移动APP自动化测试框架对比

    Cucumber中的所有语句使用Ruby定义。 优点: 有大型社区支持。列表项简单,类似英语表述的测试语句支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。...Android代码,然后在unit test运行的时候去截取android相关的代码调用,然后转到Robolectric实现的代码(shadow objects)去执行这个调用的过程。...Pivotal实验室声称使用Robolectric可以在28秒内运行1047个测试。...在实际应用中可以集成多个框架。 ? 基于Instrumentation的测试框架,比如Espresso,Robotium,Selendroid等,都不能支持跨APP使用。...脚本执行过程中,利用图像检索算法分析匹配当前屏幕中对应的控件,并对其应用相应的鼠标或键盘操作。这种方式使得我们在脚本编写时,既无需关心繁琐的应用程序相关API亦不用获取Web内容对象。

    4.8K20

    Android 平台实现 CI

    这样一个确定的出包步骤能够让开发人员在本地环境快速的完成部署。 4)对产品的信心增强 项目在一个透明的环境中运行着,团队成员都关注这App质量,努力改善项目健康状况。...并且Android的object在JVM中无法创建。 这时可以采用Robolectric单元测试框架,这将大幅度提升单元测试覆盖率,且理论上可以达到100%。...Robolectric是以JUnit为核心,完成了对Android SDK的stub。采用stub的方式后,Android的组件在JVM中即可创建并运行,无需在Android平台下运行。...(cancelButton); 接下来的工作就是将Robolectric集成到CI中,让它检查程序的健康状况。...在Jenkins中执行运行Calabash Android的shell命令前需要注意指定运行时的gemset ? Calabash Android在Jenkins中的执行命令如下: ?

    2.3K90

    关于OptionMenu和ContextMenu的实现

    *  *         >OptionMenu:  *             方式一:  *             在Activity中重写:onCreateOptionsMenu(),在此方法中调用...*             方式二:  *             ①res资源目录下,创建menu文件目录下一个xml文件,文件中添加  *             ②在Activity...中重写:onCreateOptionsMenu(),在此方法中调用  *             getMenuInflater().inflate();  *  *         >ContextMenu...:  *             方式一:  *             在Activity中重写:onCreateContextMenu(),在此方法中调用  *             menu.add...*             方式二:  *             ①res资源目录下,创建menu文件目录下一个xml文件,文件中添加  *             ②在Activity

    67320

    《Android》Lesson04-Menu

    09/27上午1-4节 一、复习:打开上节课完成的AS项目Chap2AsProj    导入项目 二、日志Log的使用 三、隐藏标题栏 1,你的Activity如果继承的是Acitivity: 在setContentView...(menu);//return true:允许创建的菜单显示出来;return false:创建的菜单无法显示 } 参考链接:android中menu.add()的使用说明_Jason_新浪博客 扩展-...带子菜单项:Android menu add中的4个参数说明 - zjy_hll的专栏 - 博客频道 - CSDN.NET 2、定义菜单响应事件:ctrl+o重写父类方法 public...super.onOptionsItemSelected(item); } 扩展-复杂:Android 学习笔记(二七):Menu - 愷风(Wei)的专栏 - 博客频道 - CSDN.NET 方法: 1、创建菜单xml (1)在res...//inflate(R.menu.menu_main,menu)给当前Activity创建菜单,参数1:通过哪个资源文件来创建菜单;参数2:菜单项将添加到哪一个Menu对象中 getMenuInflater

    1.1K70
    领券