首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

信iOS监控系统

引子 信 iOS 团队在值班的时候,时不时会收到这样的卡反馈:“用户A 刚才碰到从后台切换前台了一下,最近偶尔会遇到几次”、“用户B 反馈点对话框了五六秒”、“现网有用户反馈切换 tab 很卡”...随着信的发展普及,这类问题积累得越来越多,为了攻城狮的尊严,我们感觉到有必要专门处理一下了。 原理 在开始之前,我们先思考一下,界面是由哪些原因导致的?... dump 下来的堆栈会有多频繁?数据量会有多大? 全量上报还是抽样上报?怎么在问题跟进与节省流量直接平衡? 1. 判断标准 怎么判断主线程是不是发生了?...这样能够避免同一个写入多个文件的情况,也能避免检测线程围着同一个空转的情况。 3....效果 主线程监控在信5.3.1灰度以来,已经成功解决了不少常规手段无法定位的难题,包括: 订阅号更新导致信切换前台很卡(500+订阅号) 通讯录延迟加载导致偶尔一下(1k+好友) 他山之石与后续工作

5.3K60

信内打开链接如何直接跳转到默认浏览器打开

信在如果打开链接,信默认是会检测是否是信内的安全域名,如果这个域名是信官方内的域名很容易被信封掉,而且很不好解封。这样就造成用户推广的域名非常容易被屏蔽。...而且通过他的链接打开你的域名会直接跳转到手机默认浏览器打开,这样如果你的推广链接是下载app之类的就非常的方便!...我也联系过他们公司的技术,请教信中点击链接直接跳到默认浏览器是怎么实现的,不是在信内置浏览器打开那种,他是被告知是需要购买他们的公司源码才行。...操作步骤 他的这种技术的实现是基于信后端接口开发的一款信助手,使用了本插件生成的链接,用户在信任意环境下点击链接或者扫描二维码,可以实现直接跳转手机默认浏览器并打开指定网页。...1、打开 上面的网址(百度搜索。appinstall.cc) 2、准备好你的推广链接,实例如“www.abc.com”。在输入框填写你的下载链接,填写完毕后点击生成按钮。

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

    优化

    AndroidPerformanceMonitor implementation 'com.github.markzhai:blockcanary-android:1.5.0' AndroidPerformanceMonitor 是一个检测的开源库...而其使用与LeakCanary也比较相似,可以自主设置检测时间,检测到的卡同样是以Notification展示,在使用体验上也相当类似,与LeakCanary可以说是孪生兄弟。...提示框(Room表现不一,有些手机厂商会把提示框给去掉) ANR 解决方式 adb pull data/anr/traces.txt存储路径,然后分析CPU、IO及锁 ANR 测试 //给主线程造成...检测组件 https://github.com/SalomonBrys/ANR-WatchDog 使用:new ANRWatchDog().start(); 原理 ANR-WatchDog同样是一个检测的检测库...AndroidPerformanceMonitor与 ANR-WatchDog 区别 AndroidPerformanceMonitor:监控Msg ANR-WatchDog:看最终结果 前者适合监控

    1.7K30

    Android优化 | 单点问题监测方案

    ARTHook实战 小结 项目GitHub 背景介绍 前面提到过两种自动化自动化检测方案: AndroidPerformanceMonitor和ANR-WatchDog; 需要本方案的原因:自动化检测方案无法满足所有场景...; 如,有很多Message要执行, 但是所有Message的时间, 都没有达到自动化检测方案所配置的卡的判定阈值, 那这种情况,自动化检测方案对这些“较小型”的卡问题便无能为力了;...可是这些没有达到的判定阈值的“较小型”的卡问题, 却会一直影响用户体验,这显然是不行的!!...需要建立体系化的卡解决方案, 便要尽早地尽可能多地暴露问题,补充已有方案的不足; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 需要关注的单点问题...View绘制等; 下面以主线程IPC为例, 因为IPC其实是一个很耗时的操作, 但实际开发时很多时候都没有得到足够的重视, 偶尔还会在主线程进行IPC操作,以及频繁的调用, 而这种耗时其实很少达到的阈值

    2.4K20

    iOS信内存监控

    信急需一个有效的内存监控工具来发现问题。...一、实现原理 ------ 信内存监控最初版本是使用Facebook的FBAllocationTracker工具监控OC对象分配,用fishhook工具hook malloc/free等接口监控堆内存分配...为此我们结合了已有系统,当前台运行最后一刻有捕获到,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。...UIWebView 无论是打开网页,还是执行一段简单的js代码,UIWebView都会占用APP大量内存。...超长文本是信里常见的炸群消息,通常几千甚至几万行。如果把它绘制到同一个View里,那将会消耗大量内存,同时造成严重

    3.5K50

    iOS信内存监控

    信急需一个有效的内存监控工具来发现问题。...一 实现原理 信内存监控最初版本是使用Facebook的FBAllocationTracker工具监控OC对象分配,用fishhook工具hook malloc/free等接口监控堆内存分配,每隔1秒...为此我们结合了已有系统,当前台运行最后一刻有捕获到,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。...UIWebView 无论是打开网页,还是执行一段简单的js代码,UIWebView都会占用APP大量内存。...超长文本是信里常见的炸群消息,通常几千甚至几万行。如果把它绘制到同一个View里,那将会消耗大量内存,同时造成严重

    1.4K30

    iOS信内存监控

    信急需一个有效的内存监控工具来发现问题。...一 实现原理 信内存监控最初版本是使用Facebook的FBAllocationTracker工具监控OC对象分配,用fishhook工具hook malloc/free等接口监控堆内存分配,每隔1秒...为此我们结合了已有系统,当前台运行最后一刻有捕获到,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。...UIWebView 无论是打开网页,还是执行一段简单的js代码,UIWebView都会占用APP大量内存。...超长文本是信里常见的炸群消息,通常几千甚至几万行。如果把它绘制到同一个View里,那将会消耗大量内存,同时造成严重

    1.9K50

    Android分析

    一、原因 屏幕1秒60帧,平均每帧16.6毫秒,如果代码实现不佳,或者过于复杂,导致一帧绘制时间大于16.6毫秒,则无法完成绘制,造成丢帧,连续出现掉帧,在现象上表现为。...点击 CPU 时间轴上的任意位置以打开 CPU 性能分析器。 从 CPU 性能分析器的配置菜单中选择 System Trace,然后点击 Record。完成与应用的交互后,点击 Stop。...默认情况下,性能分析器只会将帧显示为有待调查的候选对象。在每个帧中,红色部分突出显示了相应帧超出其渲染截止时间的时长。...image.png 发现帧后,点击该帧;可根据需要按 M 键调整缩放程度以聚焦到所选帧。...这些线程与界面呈现有关,可能是导致的原因。 如需在 Android 10 或更低版本上检测情况,请执行以下操作: 查看 Display 中的 Frames 轨迹。

    2.5K20

    点击信内网页a标签直接跳转打开淘宝APP的方法实例

    首先来看下我们要实现的效果: image.png 这是最近无意中看到的一个效果,图片很清晰的看出是在信里面打开的一个网页,当点击“直接下单”的时候,就直接跳转到淘宝APP了,无需通过浏览器唤起APP...我记得信是已经屏蔽了唤起的行为,所以不知道如何做到这种效果! 通过在网上提问、查找相关的资料最终终于解决了,下面话不多说了,来一起看看详细的介绍吧。...实现方法 点击信里面的网页a标签,就可以跳转到预设的APP页面 不需要通过浏览器唤起APP 代码如下: <a href="https://t.asczwa.com/taobao?...backurl=<em>打开</em>淘宝需要显示的页面链接" rel="external nofollow" test</a 新建html文件,复制上面代码 保存上传到服务器测试 例如: <a href="https...m.tb.cn/h.vTXKNl" rel="external nofollow" test</a 效果演示: http://demo.zalou.cn/js/2017/wx-click-tb (可以通过打开此网址测试效果

    2.7K10

    监测APP

    这就是界面的原因。...所以,造成的原因分为CPU和GPU,CPU可以用CADisplayLink来检测,UI更新可以用Runloop的mode来检测 监测:开一个子线程,利用displaylink或者...Runloop来监测; 收集堆栈:将顿时的堆栈收集起来; 上传记录:将上传到后台或自定义; 这里我引用一张信开发团队的监测流程图: 二、Runloop检测 首先我们来看一个...所以通过比较dispalylink的更新时间就可以知道是否存在 - (void)updateTime{ if (!...2、上传位置,一种是自己建立后台来统计这些,嫌麻烦的话是利用第三方平台、如友盟(统计崩溃比较多)、听云、OneApm、博睿,都大同小异。

    1.3K10

    iOS优化

    按照60FPS的帧率,每隔16ms就会有一次VSync信号,1秒是1000ms,1000/60 = 16 的原因: iOS默认刷新频率是60HZ,所以GPU渲染只要达到60fps就不会产生。...RunLoop监听 原理:是在主线程进行了耗时的操作,可以添加Observer到主线程的Runloop中,通过Runloop状态切换的耗时,达到监控的目的。...监控起一个子线程定时检查主线程的状态,当主线程的状态运行超过一定的阈值,则认为主线程,从而标记为一个。...分析实现: 使用Runloop进行监控,定义一个阈值判断的出现,记录下来上报到服务器。...子线程Ping 根据发生时,主线程无响应的原理,创建子线程去循环ping主线程,ping之前先设置标志为True,再派发到主线程执行后设置标志为false,子线程在设置阈值时间内休眠结束后,根据标志判断主线程有无响应

    3.5K11

    Android BlockCanary检测

    前言 在日常业务测试中经常会发现页面跳转、滑动等等问题,但是往往发生了问题也没有什么具体信息提供给开发同学排查问题,所以也就不了了之了。...Blockcanary介绍 介绍 Blockcanary是@markzhai开发的检测app主线程工具,不需要在代码中插桩和debug代码就能检测出。...log日志 根据上面的配置代码并打包app,进行手工测试如果主线程超过1000ms,会在手机sdcard/BlockTest目录下生成日志。...文件包含几点: 发生时间 版本 imei cpu型号 内存 堆栈 上报log日志 之前方式的卡日志需要连接该设备把log手动导出来分析,或者在弹框中展示,这样并不能做到日志持久化和做后期的数据分析...项目 我们模拟一个Demo项目来模,点击block按钮后sleep2秒来模拟日志:

    1.4K30

    Android监控系统

    实际可能是这段时间内某个函数的耗时过大导致,而不一定是T2时刻的问题,如此捕获的卡信息就无法如实反应的现场。 我们看看在这之前信iOS主线程监控系统是如何实现的捕获堆栈。...信iOS的方案是起检测线程每1秒检查一次,如果检测到主线程,就将所有线程的函数调用堆栈dump到内存中。本质上,信iOS方案的计时起点是固定的,检查次数也是固定的。...实验方法:ViVoX9 上运行信读书App,使用监控与高频采样,和不使用监控的情况下,保持两次的操作动作相同,分析性能差异,数据如下: 关闭监控 打开监控 对比情况...200个问题 监控的组件化 考虑到Android监控的通用性,除了应用于Android WeRead中,我们也推广到广研的其他产品中,如企业信,QQ邮箱。...,会实时输出的时间点和堆栈信息,我们将这些信息写入日志文件落地,同时每天固定场景上报到服务器,如每天上报一次,用户打开app后进行上报等策略。

    7.6K52
    领券