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

系统捕获异常并发送到服务器

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象...,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序...遇到软件没有捕获的异常之后,系统会弹出这个默认的强制关闭对话框。 我们当然不希望用户看到这种现象,简直是对用户心灵上的打击,而且对我们的bug的修复也是毫无帮助的。...如果程序出现了未捕获异常,默认会弹出系统中强制关闭对话框。我们需要实现此接口,并注册为程序中默认未捕获异常处理。这样当未捕获异常发生时,就可以做一些个性化的异常处理操作。...看以看到,并不会有强制关闭的对话框出现了,取而代之的是我们比较有好的提示信息。 然后看一下SDCARD生成的文件: ?

93770

移动开发界囚徒现身说法,审查困境与控制权探讨

开始我并没有惊慌,因为问题看起来跟应用更新没啥关系。但在第一次使用 Android 实机(我之前只在模拟器上测试过)检查了登录流程后,发现应用会崩溃并关闭。...这个问题会导致应用在登录后立即崩溃,而使用较旧 Android 版本则不受影响。我们的最大疏忽,就是没有在模拟测试时使用最新的 Android 版本,所以没能及时问题隐患。...更新时引发问题其实并不少见,但这次谷歌设定了明确的截止日期,再加上需要更新的东西并不多,所以让人放松了警惕。...也就是说,我根本没法回归旧版本,唯一的办法只有修复最新 Android 版本的崩溃问题、继续保留更新后的应用。 而且我得马上就开始修复。...我还算幸运,因为同样的崩溃状况在最新 Android 模拟器上成功复现,而且修复起来并不需要做太多代码变更。

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

    Android进阶之绘制-自定义View完全掌握(四)

    这样一个静态的开关就被绘制上去了,现在我们要让开关通过点击能改变状态。 我们先来分析一下,现在的状态是处于关闭的状态,如何让它处于开启状态?...要想实现这样的需求,我们就需要去重写onTouchEvent()方法来监听触摸事件,然后获得按下时的坐标,但是在event对象中,有getX()方法和getRawX()方法,那么我们应该使用哪个方法呢?...我贴出两张图。 ? ? 相信看到图就一目了然了吧。 我们对MyToggleButton类的代码进行修改。...现在我们已经无法将开关滑出控件外,但是,不知道你们有没有发现,它可以滑动到一个比较尴尬的地方,就是既不是开启状态,也不是关闭状态,而是处于两者中间,那这种情况同样也是不被允许的,所以,我们现在来解决一下这个问题...这个时候,虽然不会出现上次的尴尬情况,但是,这里又有一个问题,就是我在滑动的时候,它总是往我滑动的反方向跑,我想让它向右滑动,可它偏偏就要去左边,这显然也是不行的吧。

    53520

    谈一谈Android内存

    02 二、讲内存之前不得不讲虚拟机 Android在4.4之前一直用的都是Dalvik虚拟机(以下以DVM简称),在Android 4.4的时候推出可选择的ART虚拟机并且在5.0的时候全面抛弃DVM而完全使用...如果在不同的系统平台上我都要分别去使用所在平台的编译器编译生成它们对应的机器码去执行(参考下图)。这就给应用的移植带来很大的困难。 聪明的人类总是能想到好办法,虚拟机的概念从空而降。...为什么Android抛弃了DVM而选择ART 我们都知道Android最终是将Java代码编译成.dex文件装载到虚拟机中去的,DVM是基于JIT(Just In Time),即在执行的时候实时的将部分...e.文件流 使用文件流操作时,结束的时候务必一定要关闭。 f.Bitmap 如果你的Activity大量的使用Bitmap时,记得一定要在Activity被销毁前做释放操作。...这个是非常棒的工具,简单明了,笔者从15年的项目到现在的项目都有在用。

    63620

    高效Android开发者必须知道的4个工具

    举个例子,如果你正在应用Android KitKat,并且项目中最低的API版本是21。在这种情况下,你只要在代码中写下tools:targetApi以及适合的版本号即可。...使用这个属性,Android Studio会自动选择所需的主题用于预览。 tools:showIn tools:showIn有助于指出想要哪个布局在预览中显示。例如: ? 用来包括布局。...使用Resource Annotations可以强制输入的文本。...并且它在Android以及iOS开发人员中很受欢迎。 4. LeakCanary 任务:及时检测内存泄漏以防止OutOfMemoryError崩溃,并降低app内存溢出的风险。...关于最后那个提到的工具,我们将在以后深入探讨。选择什么工具主要取决于开发人员个人的喜好和具体的项目情况。 如果你愿意告诉我你认为必须拥有的工具,那么非常欢迎在评论中畅所欲言。期待听到不同的声音。

    70930

    高效Android开发者必须知道的4个工具

    举个例子,如果你正在应用Android KitKat,并且项目中最低的API版本是21。在这种情况下,你只要在代码中写下tools:targetApi以及适合的版本号即可。...使用这个属性,Android Studio会自动选择所需的主题用于预览。 tools:showIn tools:showIn有助于指出想要哪个布局在预览中显示。例如: ? 用来包括布局。...使用Resource Annotations可以强制输入的文本。...并且它在Android以及iOS开发人员中很受欢迎。 4. LeakCanary 任务:及时检测内存泄漏以防止OutOfMemoryError崩溃,并降低app内存溢出的风险。...关于最后那个提到的工具,我们将在以后深入探讨。选择什么工具主要取决于开发人员个人的喜好和具体的项目情况。 如果你愿意告诉我你认为必须拥有的工具,那么非常欢迎在评论中畅所欲言。期待听到不同的声音。

    1.3K10

    Sentry 开发者贡献指南 - SDK 开发(会话)

    值 0 是保留的,因为 init 设置为 true 的会话将自动将 seq 强制为 0。 timestamp String, optional. 会话更改事件发生时的时间戳。...计算机被关闭/断电 用户通过 kill -9 或任务管理器强制关闭应用程序 崩溃、异常与错误 Session 应该在遇到未处理的错误(例如应用程序完全崩溃)时转换为 crashed。...在这些情况下,用户通过任务管理器强制关闭应用程序、机器断电或其他情况。可以通过将 session 持久保存到磁盘来存储 session。...(也许,需要讨论)如果我的先决条件不能被检测到(例如,没有好的方法来确定 release 版本), 那么我们设置一些默认值,以便我们总是可以默认报告 session (取决于讨论,这可能不会是 SDK...作为对上述点的实现提示,当 "Client" 关闭或刷新时,相关联的 "Session Flusher" 也应被刷新并在传输被刷新/关闭之前提交当前聚合。

    1.7K20

    每个Android开发者应该知道的6个SDK和API

    在过去4年时间里,我一直致力于构建Android app,下面这些是我构建新app时的必备品,所以推荐给大家。...Material design support library 在开发一个现代化的Android app时,我们总是希望能够使用最新和最棒的设计组件。...但是,当发生崩溃时,用户必须手动发送报告。如果你真的想把事情安排妥当,那么你应该使用ACRA库,并将其连接到tracepot的后端,以便于查看仪表板。...我选择tracepot是因为它最容易与ACRA整合,只需要引用tracepot在ACRA初始化调用时给你的URL即可。 ?...://www.tracepot.com AppCompat and Support library 这两个不用我多说,基本上是强制性的,它们能在旧设备上支持新功能,从片段到查看寻呼机,一应俱全。

    1.1K100

    配置Android项目 - 一些重要的事情

    gitignore 当你在Android Studio中创建一个新的Android项目时,它已经生成了gitignore文件,但通常它不包含所有必要的规则。...通常我在那里放一些自定义的gradle脚本文件,proguard和静态代码分析工具的规则,如pmd,findbugs,lint。 在模板项目中查看 tools文件夹。...当从IDE运行或调试项目时,Android Studio会使用Android SDK工具生成的调试证书自动为您的APK签名。...strict mode Android StrictMode可帮助您检测不同类型的问题: 可关闭对象没关闭 在主线程中读写文件或者访问网络 uri 暴露 … 每当检测到这样的问题,它可以显示适当的日志或应用程序崩溃...我建议你只在调试的时候打开它并且使用detectAll方法来检测所有类型的问题。 ? 这里是当你忘记关闭SQLiteCursor的日志的例子: ? 在模板代码中查看StrictMode。

    66820

    android studio logcat技巧

    、来自在 Android 上运行的服务的消息、或系统消息,例如发生垃圾收集时。...如何读取日志 每个日志都有一个日期、时间戳、进程和线程 ID、标签、包名称、优先级以及与其关联的消息。不同的标签具有独特的颜色,有助于识别日志的类型。...更改配色方案 要更改配色方案,请导航至 Android Studio > 设置 > 编辑器 > 配色方案。要更改日志视图的配色方案,请选择 Android Logcat。...要创建拆分,请在日志视图中右键单击或单击工具栏中的“拆分面板”选项,然后选择“向右拆分”或“向下拆分”。要关闭拆分,请右键单击并选择关闭。每个拆分都允许您设置自己的设备连接、查看选项和查询。...is 键 您可以按如下方式使用 is 键: is:crash 匹配表示应用程序崩溃(本机或 Java)的日志条目。

    18210

    Bootstrap中datetimepicker日期控件1899年问题解决

    我们项目一直采用的是angular+bootstrap,日期控件用的是bootstrap中的datetimepicker,这个日期控件存在一个bug,当用户输入日期时,日期控件会自动跳到1899年,这个用户体验特别不好...一、存在问题     当用户输入日期时,控件会自动跳到1899年。至于为什么是1899年,老大说,1899是控件支持的最小日期。我还以为是1899年诞生的(可笑)。 ?   ...默认值: true   当选择器关闭的时候,是否强制解析输入框中的值。...也就是说,当用户在输入框中输入了不正确的日期,选择器将会尽量解析输入的值,并将解析后的正确值按照给定的格式format设置到输入框中。...经过这个问题,我突然发现,每次解决问题,我找答案的途径都太单一,每次都是当我快要放弃的时候,才会想到其他的途径。致自己一句话,没有什么是github上没有的,时刻把github放心里。

    2.4K40

    “面试不败计划”:集合、日期、异常、序列化、其他知识点

    ArrayMap是Android SDK中提供的,非Android开发者可以略过. ArrayMap是用两个数组来模拟map,更少的内存占用空间,更高的效率....当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放...如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐 joda-time 库。 2、如何格式化日期?...Java 中,任何未处理的受检查异常强制在 throws 子句中声明。...,Java 会自动关闭。

    89320

    如何用 Android vitals 解决应用程序的质量问题

    即使在使用硬件实验室进行测试时,它也会以其他方式难以获得的规模为你提供信息。 Android vitals 可以提醒你的问题包括崩溃、应用程序无响应(ANR)和渲染时间。...发生冻结时,如果你的应用位于前台,会弹出对话框让用户选择关闭应用或等待响应。从用户的角度来看,这种行为与应用崩溃一样糟糕。...对于用户来说,ANR 是当他们尝试与你的应用进行交互时,该界面被冻结。界面保持冻结几秒钟后,会显示一个对话框,让用户选择等待或强制应用程序退出。...你还可以选择 StrictMode 在检测到阻塞调用时如何提醒你:通过让应用程序崩溃、Log 信息或者是显示对话框。更多详细信息,请参阅 ThreadPolicy.Builder类。...在代码中查找和解决这些问题并不总是那么直截了当,但有些工具和技术可以帮你更高效地完成这些工作。 Android vitals 还可以给你提供更多帮助,我会在下一篇文章里介绍更多这些功能。

    2.3K10

    设计数据库:7件你不想做的事情

    当我遇到一个不好设计时,我就会问自己:“这些数据做了什么,竟然会受到如此恶劣的对待?” ,数据比代码持续的时间更长,因此应该相应地进行处理。 下面是在设计数据库时不希望做的七件事。...如果您以前没有设计过数据库,那么不要将关键任务系统作为您的第一个项目。出去雇一个专家来指导你。 我认为下面总结得好: 2. 没有性能预期 我参与过不止一个项目,在这些项目中根本没有任何性能期望。...将这些行乘以4个字节,就会有800万字节,或大约7.8MB的浪费空间。我知道听起来不是很多,是吗?好吧,加起来很快。我只向您展示了一列的一个示例,但是您的日期列呢?...如果你问某人需要为任何系统保存记录多长时间,答案几乎总是“七年”,即使真正的答案接近七周。 因此,系统构建时只考虑一件事:将其存储并永久保存在表中。...当存储越来越多的数据时,了解这些信息将帮助您实现项目性能预期。 结论 这就是我看到好的数据库创意如何变成糟糕的数据库设计的清单。

    62660

    Xamarin 学习笔记 - 配置环境(Windows & iOS)

    最近几年,针对我的社交项目,我尝试使用Hybrid框架和AngularJS以及Ionic,Cordova一起构建一个示例……但一切并不像我想象得那样容易。...你可以在安装时选择需要的组件,或许你会选择不安装Android SDK,因为你已经在Windows平台下安装过了。...C:/java C:/android-sdk C:/android-ndk 将这些组件注册在环境变量里,以确保当我需要使用其它开发工具平台时,如果这些开发工具恰好也依赖这三个组件,那么它们就已经在那里了...Emulator仿真器 当我开始我的工作室时,我遇到了和仿真器相关的许多麻烦,Windows 10 Mobile仿真器使用Hyper-v。...一旦发布并使用了应用程序,开发人员就想知道发生了什么并且在发生崩溃时易于维护,你可以从应用程序的字段中获取崩溃报告中的实时堆栈跟踪。

    6.2K20

    严苛模式(StrictMode)

    大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。  ...你能够强制用警告取代崩溃(crash),也能够仅将警告计入日志,让你的应用继续运行。策略的细节尚难确定,能够期待随Android的成熟Google将添加�很多其它策略。    ...你能选择将警告写入LogCat,显示一个对话框,闪下屏幕,写入DropBox日志文件,或让应用崩溃。最通常的做法是写入LogCat或让应用崩溃。...虚拟机策略(VmPolicy)能检查内存泄漏,譬如,当关闭一个SQLite对象前的完结操作,或其它不论什么类似可关闭对象在关闭前的完结操作。...当然,你可能希望适时关闭严苛模式(StrictMode),当你的程序作为产品公布时,你可不希望它仅为了一个警告在你的用户手里崩溃。

    51340

    01.Android崩溃Crash封装库

    2.对于某些设备,比如做Kindle开发,可以设置崩溃重启app操作 3.暴露了用户上传自己捕获的crash数据,以及崩溃重启的接口监听操作 4.一个崩溃日志保存到一个文件中,文件命名规则【版本+日期+...能够收集崩溃中的日志写入文件,记录包括设备信息,进程信息,崩溃信息(Java崩溃、Native崩溃 or ANR),以及崩溃时内存信息到file文件中。...可以方便测试和产品给开发提出那种偶发性bug的定位日志,免得对于偶发行崩溃,开发总是不承认……开发总是不承认…… 03.该库如何使用 如何引入该库implementation 'cn.yc:ToolLib...崩溃、Native 崩溃 or ANR) 收集崩溃时的系统信息 机型、系统、厂商、CPU、ABI、Linux 版本等。...详细可以看:Android项目崩溃分析 崩溃后异常堆栈链是如何形成的 待完善,看:异常栈轨迹处理 08.部分问题反馈 该异常捕获实效了是什么情况?

    1.1K30

    Better Kotlin

    甚至宝宝想告诉你,我 GitHub 上 1k Star 的 AiYaGilr 项目的 Kotlin 分支,也是这样而来。但真是踩了不少的坑。 这样的方式足够地快,但却会出现很多很多的 !!...当我第一次使用 Kotlin 的时候,我以为val 和 var 的区别在于val 代表不可变,而 var 代表是可变的。但事实比这更加微妙:val 不代表不可变,val 意味着只读。。...实际上,目前我们大多数的 Android 项目都是 Java 和 Kotlin 混编的,包括我们的项目在内也是如此。所以我们总是免不了 Java 和 Kotlin 互调的情况。...这样我们可以先绕过 kotlin 的强制要求,在后面使用的时候,再也不需要先判断它是否为空了。...但由于某些原因,当我把上面的 ISkipService 类修改为了 Kotlin 实现,却发生了崩溃,从代码上暂时没看出问题。

    1.3K20

    Android StrictMode 详解

    大家好,又见面了,我是你们的朋友全栈君。...可以强制用警告代替崩溃(crash),也可以仅将警告计入日志,让你的应用继续执行 StrictMode最常用来捕捉应用程序的主线程,它将报告与线程及虚拟机相关的策略违例。...你能选择将警告写入LogCat,显示一个对话框,闪下屏幕,写入DropBox日志文件,或让应用崩溃。最通常的做法是写入LogCat或让应用崩溃。...虚拟机策略(VmPolicy)能检查内存泄漏,譬如,当关闭一个SQLite对象前的完结操作,或其他任何类似可关闭对象在关闭前的完结操作。...当然,可能希望适时关闭严苛模式(StrictMode),当你的程序作为产品发布时,可不希望它仅为了一个警告在你的用户手里崩溃 有两个方法可以关闭严苛模式(StrictMode),最直接的就是移除相应代码

    62020

    如何使用IMEI号码追踪丢失的安卓手机

    (Android)手机 IMEI(国际移动设备识别码)是GSMA授权的唯一15位代码,就像手机的身份证一样。每当电话使用特定网络拨打或接听电话,发送或接收消息时,都会自动发出并跟踪其IMEI号码。...1、自我修复代码 微信拥有自我修复代码相信很多小伙伴并不知晓当我们使用微信时如果遇到崩溃、假死、网络延迟等问题请不要慌张试下以下代码。...输入代码“//recover” iOS&添加朋友中输入recover”根据出现的问题选择需要修复的功能。...虽然和微信的【位置】功能相同不过敲代码显得我更牛逼啊。...8,强制加好友加关注 如果你要添加一个你知道微信号的人而对方设置了隐私保护无法搜到对方的微信这时候我们可以通过一段代码来添加好友。复制下面代码修改对方的微信号 然后点击发送。

    11.9K30
    领券