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

设计 repeatOnLifecycle API 背后的故事

纵观全文,您将了解到在某些场景中使用特定协程 API 的危险程度、为 API 命名的困难程度以及我们决定在函数库中只保留底层挂起 API 的原因。...同时,您会意识到所有的 API 决策都需要根据 API 的复杂度、可读性和容易出错程度进行权衡。...更新地图(信息) } } // 注意:运行到此处时,生命周期已经处于 DESTROYED 状态!...而这也是我们在 lifecycle-runtime-ktx:2.4.0-alpha01 中加入 LifecycleOwner.addRepeatingJob API 时尝试做的事,不过在 alpha02...因此,您不应该在协程内调用它! 更少的代码?您在少写一行代码的同时,却用了一个容易出错的 API。 第一点看起来比较显而易见,但开发者们往往会掉入陷阱。

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

    从10个协程到1000个协程:性能下降的背后究竟发生了什么?

    这篇文章就带你把这个现象讲清楚,再用一个真正完整的异步抓取实例帮你走通:使用代理(以爬虫代理格式为参考)抓学术论文的数据提取标题、作者、机构、摘要、DOI、期刊等字段数据存到SQLite最后还会告诉你:...目标非常明确:写一个真正可跑的异步学术抓取使用爬虫代理IP从DOAJ抓取开放的论文元数据提取核心字段(标题、作者、机构、摘要、关键词、DOI、年份、期刊、卷期、页码、学科分类、引用数)存到SQLite最后解释协程越多越慢的原因并准备一整套...="https://doaj.org/api/v2/search/articles?...陷阱1:协程数量越多越快?现实完全相反很多人写程序时会把并发设置成200、300,甚至1000。但这样不仅不会更快,反而会让CPU、代理、目标网站都跟你翻脸。...只要一个请求出错,没有保护的await可能导致整个任务失败。七、常见问题的重点讲解下面我把抓取程序运行中常见的四种现象拆开来说:第一种:超时异常特别多。

    20310

    API level targeting to 28,准备好了吗?

    【前言】 小编负责的地图手表项目,和Google合作,需要尽快完成targetsdk升级的适配测试工作。...Google Play的目标API级别要求:Google Play 要求新应用(自2019年8月1日起)和应用更新(自2019年11月1日起)将目标API级别至少设为28(至少为Android9.0)。...应用内置的己方的sdkblacklist(黑名单): 无论targetSdkVersion 为多少,只要应用运行在Android 9.0 平台上,访问此名单中的任何一个接口都会受限(系统就会抛出错误)...您可以使用adb logcat 来查看这些日志消息,这些消息显示在所运行应用的PID 下。例如: ? (2). 使用StrictMode API 进行测试 (3)....使用google工具veridex 对应用进行扫描 可以在APK上运行静态分析工具veridex。

    1.8K20

    走进QCon,探秘携程旅行APP

    杨思洵:携程目前已经在Apple Watch上提供的主要服务有:旅行日程,航班动态的通知,待入住酒店的地图和导航,发现周边好玩等。...InfoQ:Apple Watch上还是有一些比较有趣的App,而且我认为是和出行关系很密切的,比如Google的翻译、拍照控制(自拍狂必备)、地图、支付、二维码等,携程目前都有哪些比较有趣的度假游方面的设计呢...杨思洵:关于有趣的设计,你提到的几个,像翻译、地图和二维码这些,正好在携程的Apple Watch App上都有规划,最先实现的就是地图,用户到了预订酒店所在的城市,可以通过地图查看该酒店的位置,也可以通过...据说苹果妥协了,可以用Watch独立运行第三方App。如果属实,对携程来说可以发挥的地方会不会更多一些?比如呢?...Watch OS2 发布后,我们也看到整个系统的机制发生了根本性的变化,也开放了了更多系统接口,Watch可以独立运行App,这不仅可以使App的性能和运行速度得以提升,也使Watchkit App有了更多的想象和发挥空间

    1.1K100

    flink线程模型源码分析1之前篇将StreamTask中的线程模型更改为基于Mailbox的方法

    使用checkpoint lock有很多缺点:锁必须传递到代码中的许多地方,泄漏到面向用户的API中(请参阅SourceContext),不获取锁可能会导致细微或不那么细微的bug,而关于并发线程的推理通常很容易出错...注意,任务的主线程在执行这些Runnables程序时是可以阻塞执行的,生产者在尝试将新动作放入队列时也是可以阻塞的。第一种情况对应于当前代码中的情况,在检查点锁下阻塞了较长的临界段。...这是他们的公共API的一部分,不能为了向后兼容自定义sources而更改。但是,在永不产生结果的循环中运行的source function不会给我们的方法任何检查邮箱的机会。...我们可以采用不同的分支,因为可以通过API检测这样的sources,不同的执行行为也可以是在原始邮箱线程中运行的操作,直到流任务终止。...Kotlin协程确实使邮箱方法更容易实现和维护。邮箱本身将是通道,异步操作可以挂起,将控制权交还给邮箱处理器。

    3.3K31

    Google Map

    学习内容 Google Map服务简介 获取Google Map API Key 根据 GPS信息在地图上定位 根据GPS信息地图上跟踪用户轨迹 调用Google的地址解析服务 根据地址在地图上定位...而在Android中要开发基于地图的应用,使用的类是MapView,如果要讲Google Map数据显示到MapView上,必须注册Google Map服务,并获得一个Maps API Keys。...只有使用了Map API Key,android才能使用Google Maps服务,获得地图数据。 ​...当我们在Eclipse中运行Android程序时,默认就会使用debug.keystore进行签名。如下图10.1.1所示。...申请完Map API Key之后,还需要创建一个能够运行Google地图的模拟器,该模拟器的创建步骤与前文中模拟器的创建稍有不同,具体就是在选择模拟器的Target时,选择的是Google APIs,而不再是

    3.1K10

    埋点测试方法和埋点测试平台

    然后开发人员会将其与各种系统数据库连接起来,并在运行时同步到指定埋点测试套件中。...通常,开发人员在使用这一应用程序时,只需要创建一个问题“是否在开发过程中发生错误”。问题会根据问题描述文件中标记出错误纠正策略来被发现。您可以设置纠错策略,以实现更好的解决方案。...当您尝试发现错误时,也可以对一些具体步骤进行跟踪——如果发现用户操作错误,则可帮助我们更好地发现新问题。使用埋点试错器创建一个“功能测试”,并可以对功能测试。...3、埋点试错器的数据在 Android应用程序(包括 iOS和 Android)中使用会更加广泛。 用户在使用 Google Play商店下载应用时,其手机号都会出现在用户端。...例如:谷歌地图 APP中包含了一个地图查询功能,但是该功能在用户在地图中导航使用时出现了问题。谷歌地图 APP内包含了与地图匹配的文本信息。用户可以使用这些信息对地图进行调整,从而实现更准确的导航。

    6.4K31

    降本增笑的背后,是开猿节流的异常

    例如检查参数不合法,在执行一个类的某些操作时报告不支持这样的操作,或违反当前对象的某种状态等; 运行时错误:抛出时用于报告执行某些程序时无法被检测到错误,例如打开一个不存在的文件,这个文件存在与否和本身程序没有关系...一个典型的 errno 使用例子是尝试打开一个文件,如果文件不存在,fopen 函数会返回 NULL,并设置 errno 为 ENOENT("No such file or directory"的错误码...微信后端的 libco 在切换协程时,只有在一些网络相关的操作中保存了 errno,但如果自己使用协程中的 co_yield_ct 切换协程,co_resume 恢复协程时,并没有把当前协程环境中的 errno...VB 使用了一种 On Error 语句在运行时捕获和处理异常。...✔️ 解耦编程语言和操作系统 任何语言包括不支持异常的 C 语言都可以使用 Win32API 来实现自己的异常处理功能。

    74420

    涨姿势 | App定位和地图的那些坑

    开发App时会遇到各种坑,本文分享我们在iOS/Android系统中定位和地图中遇到的坑,以及携程App的解决方案。...如果使用高德或者百度iOS定位SDK中的接口,是可以直接获得火星偏移后的坐标的,由于App Size问题,携程App没有集成第三方SDK,而是通过近似偏移算法直接做偏移(自行Google『transform...最坑的是iOS地图使用的数据源和当前手机所处的位置是相关的: 1)如果手机在大陆地区,iOS地图使用的是高德地图数据源:此时用户查看大陆和港澳台地图细节信息时,使用的是GCJ02火星坐标系,同时地图显示精度很高...我们的解决办法是开发WebView版的Google地图组件,载入ditu.google.cn,见下图效果。 ?...前面提到的iOS系统地图精度问题我们也是用相同方法解决的,只是显示时处理逻辑更复杂,人在国内看国外地图,人在国外看国内地图两种情况就会使用自定义Google地图替代,其他情况下继续使用系统地图。 ?

    7.2K60

    降本增笑的P0事故背后,是开猿节流引发的代码异常吗?

    例如检查参数不合法,在执行一个类的某些操作时报告不支持这样的操作,或违反当前对象的某种状态等; 运行时错误:抛出时用于报告执行某些程序时无法被检测到错误,例如打开一个不存在的文件,这个文件存在与否和本身程序没有关系...一个典型的 errno 使用例子是尝试打开一个文件,如果文件不存在,fopen 函数会返回 NULL,并设置 errno 为 ENOENT("No such file or directory"的错误码...微信后端的 libco 在切换协程时,只有在一些网络相关的操作中保存了 errno,但如果自己使用协程中的 co_yield_ct 切换协程,co_resume 恢复协程时,并没有把当前协程环境中的 errno...VB 使用了一种 On Error 语句在运行时捕获和处理异常。...✔️ 解耦编程语言和操作系统 任何语言包括不支持异常的 C 语言都可以使用 Win32API 来实现自己的异常处理功能。

    1.7K101

    如何使用AngularJS和PHP为任何位置生成短而独特的数字地址

    第1步 - 获取Google API密钥 在本教程中,您将使用JavaScript创建Google Maps的界面。...Google会分配API密钥,以便开发人员可以在Google地图上使用JavaScript API,您需要获取该API并将其添加到您的网络应用程序代码中。...因此,如果应用程序无法与Google Maps API通信以生成位置的纬度和经度,则生成地图代码的任何尝试都将失败。...您可以随意尝试不同的地址,并注意您输入的地址不一定需要在美国境内。 您的最后一项任务是启用此应用程序的第二个功能:使用相应的地图代码从数据库中检索地址。...您现在可以为世界上的任何位置创建唯一的地图代码,然后使用该地图代码检索位置的物理地址。 结论 在本教程中,您使用Google Maps API固定位置并获取其经度和纬度信息。

    17.4K20

    谷歌AI绘制大脑神经地图,开源代码帮你理清混乱的脑回路

    不过,谷歌团队尝试用一个基于RNN的算法,将两步并作一步。 把算法种在某个像素点上,让它在那里生根发芽——用RCNN预测哪些像素,和开始那一点属于同一个物体,把它们填上一样的颜色就好了。...ERL测量准确度 预期运行长度 (Expected Run Length) 这个指标,是谷歌和马普所一起设计出来的。 在一张3D大脑图像上,给定某个神经元上的某个随机点,从那里开始追踪。...那么,走出多远,算法跟踪就会出错?这就是ERL。 其实,和平均故障间隔 (MTBF) 道理一样,只是这里测量的是距离,不是时间。...算法出错不多,只花了很少的人力去修改。现在,马普所的研究人员已经可以用这份地图,来研究鸟鸣时的大脑活动了。 一般生物表示,天籁和音痴的脑回路,大概会很不一样吧。...TensorFlow代码传送门: https://github.com/google/ffn/ WebGL 3D传送门: https://github.com/google/neuroglancer (

    1.1K40

    小程序提升界面使用体验 丰富了内容展示组件

    昨晚,微信小程序开放了更多页面内能力,主要是提升界面使用体验、丰富内容展示组件、完善系统硬件能力,这些能力的提升可以帮助开发者更好地优化使用体验,让用户爱上你的小程序。...以下是相关能力的展示 01—提升界面使用体验 小程序可以灵活调整顶部标题栏的颜色,同自己的页面保持色彩统一。 小程序可以获取页面布局,了解用户屏幕滑动情况,并使用页面滚动接口。...在用户下次打开小程序时,立即滚动到未读处,方便用户继续阅读。 地图、视频和画布上,现在可以展示简单的图片及文字,帮助用户更好地使用这些功能。...增加 rotate 参数 A 新增 map 上下文 getScale getRegion 接口 支持返回当前缩放级别和视野范围 F 修复 map 上下文 translateMarker 接口自动旋转计算出错的问题... 弹幕重叠问题 A 新增 性能分析 开发者工具增加 Trace 功能 A 新增 性能建议文档 A 增加 页面事件 onPageScroll 监听页面滚动事件 U 更新 框架 小程序运行机制

    2K80

    牛客网_Go语言相关练习_判断&选择题(4)

    当程序运行时,如果遇到引用空指针、下标越界或显式调用panic函数等情况,则先触发panic函数的执行,然后调用延迟函数。...如果一路在延迟函数中没有recover函数的调用,则会到达该携程的起点,该携程结束,然后终止其他所有携程,包括主携程(类似于C语言中的主线程,该携程ID为1)。...Golang错误和异常是可以互相转换的: 错误转异常,比如程序逻辑上尝试请求某个URL,最多尝试三次,尝试三次的过程中请求失败是错误,尝试完第三次还不成功的话,失败就被提升为异常了。.../*删除元素*/ delete(countryCapitalMap, "France") fmt.Println("法国条目被删除") fmt.Println("删除元素后地图...当使用p的值的时候会自动转为使用指针的形式访问。 ? 官方给出的Beego框架概览(MVC模式的构造) ? ?

    99420

    谷歌地图地理解析

    受当地法律限制及各方面原因,国内很多地图并不包含地理解析和反解析功能(地理解析和反解析功能功能不够强悍),Google永远是最棒的。...废话不多说要使用到Google map 地理解析和反解析功能,我们需要了解google.maps.Geocoder类,谷歌地图给我们提供了强大的api,下面我们来实现 1.初始化地图(最基本的,不解释)...//初始化地图 var map = new google.maps.Map(document.getElementById("map_canvas"),{ center : new google.maps.LatLng...进行解析后返回的状态,包含5种: ERROR(谷歌地图服务可能出错) INVALID_REQUEST(GeocoderRequest无效,即输入的请求是错误的,可能是没有选择,或者属性写错) OK(解析完成...DOCTYPE html> google.com/maps/api/js?

    2.6K30
    领券