Android 页面回收引起的闪退问题的解决方法

Android 部分手机拍照完成后应用闪退获取不到图片 拍照上传图片目前在各大应用中比较普遍,一般情况下通过隐式跳转调用系统相机完成拍照,如下(7.0以上除外):Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用系统相机 path =”储存路径” + DateTimeUitls.getPhpTimeStamp() + “.jpg”; imageCropUri = Uri. 阅读详情


在安卓页面开发中,fragement的灵活使用极大方便了程序员的工作,并且由Fragment 替代TabActivity来做导航,性能也更好,所以fragement被程序员广泛使用中。但是fragement相对activity,也更容易被系统所回收。如果当前的fragement从事了一些异常操作或者注册了广播事件,当事件完成操作来送达通知,但是fragement又已经被系统回收了,这时系统就会重新初始化/加载该fragement,如果原先的数据状态未保存或者异常未处理,就很容易引起空指针异常而闪退。


如下:

java.lang.NullPointerException
	at android.view.LayoutInflater.from(LayoutInflater.java:216)
	at com.lebo.xxx.bbbb.ui.auction.auctionhall.AuctionHallFragment.c(SourceFile:491)
	at com.lebo.xxx.bbbb.widget.SlidingTabStrip.a(SourceFile:191)
	at com.lebo.xxx.bbbb.ui.auction.auctionhall.AuctionHallFragment.d(SourceFile:234)
	at com.lebo.xxx.bbbb.ui.auction.auctionhall.AuctionHallFragment.a(SourceFile:341)
	at com.lebo.xxx.bbbb.ui.auction.auctionhall.AuctionHallFragment.a(SourceFile:54)
	at zs.a(SourceFile:300)
	at zs.onSuccess(SourceFile:277)
	at com.lebo.xxx.bbbb.framework.http.HttpHandler.onProgressUpdate(SourceFile:152)
	at com.lebo.xxx.bbbb.framework.core.AsyncTask$InternalHandler.handleMessage(SourceFile:503)
	at android.os.Handler.dispatchMessage(Handler.java:102)
	at android.os.Looper.loop(Looper.java:136)
	at android.app.ActivityThread.main(ActivityThread.java:5314)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:680)
	at dalvik.system.NativeStart.main(Native Method)
展开                                     

没有经验的工程师处理该问题时,想当然的就做 非空 的限制判断。这个闪退问题貌似解决了,但是他就像洪水一下,从另外一个地方泄洪了,如下:

java.lang.NullPointerException

	at com.lebo.xxx.bbbb.ui.auction.auctionhall.AuctionListFragment.a(SourceFile:268)
	at com.lebo.xxx.bbbb.ui.auction.auctionhall.AuctionHallFragment.a(SourceFile:350)
	at com.lebo.xxx.bbbb.ui.auction.auctionhall.AuctionHallFragment.a(SourceFile:55)
	at aah.a(SourceFile:302)
	at aah.onSuccess(SourceFile:279)
	at com.lebo.xxx.bbbb.framework.http.HttpHandler.onProgressUpdate(SourceFile:152)
	at com.lebo.xxx.bbbb.framework.core.AsyncTask$InternalHandler.handleMessage(SourceFile


于是再想当然的加非空判断

java.lang.IllegalStateException: Activity has been destroyed

	at z.a(SourceFile:1460)
	at l.a(SourceFile:634)
	at l.b(SourceFile:617)
	at com.lebo.mychebao.netauction.ui.auction.auctionhall.AuctionHallFragment.T(SourceFile:406)
	at com.lebo.mychebao.netauction.ui.auction.auctionhall.AuctionHallFragment.d(SourceFile:248)
	at com.lebo.mychebao.netauction.ui.auction.auctionhall.AuctionHallFragment.a(SourceFile:363)
	at com.lebo.mychebao.netauction.ui.auction.auctionhall.AuctionHallFragment.a(SourceFile:55)
	at aap.a(SourceFile:322)
	at aap.onSuccess(SourceFile:299)
	at com.lebo.mychebao.netauction.framework.http.HttpHandler.onProgressUpdate(SourceFile:152

这下,程序员傻眼了,没辙了。 其实,这个闪退的根本原因是收到网络请求返回的时候,页面已经被回收掉了,如果继续处理该网络请求的话,就会存在各种各样的未知问题。 所以只要在页面OnDestroy的时候取消掉网络请求即可。当然如果还不放心或者由于网络框架支持的还不是很到位,那就在onSuccess的时候在判断页面是否已回收就行了。


其实,闪退问题就象人生病了一样,不能头疼医头,脚痛医脚,要找到根本原因,对症下药才能治愈。




ESP-IDF 利用ESP32构建智能音乐播放器(一)---------- 实现SD卡MP3文件的解码与播放 本文详细介绍了如何利用ESP32和ESP-IDF开发框架,从零开始构建一个智能音乐播放器。文章重点讲解了如何通过SD卡模块读取MP3文件,并集成Helix MP3解码库进行软件解码,最终通过I2S接口驱动音频模块实现播放。内容涵盖硬件连接、软件环境搭建、核心解码与输出逻辑,为嵌入式音频开发提供了完整的实战指南。 阅读详情

相关推荐

从零到一:用CubeMX和485模块快速上手多摩川绝对式编码器(附清零操作详解)

本文详细介绍了如何使用STM32CubeMX和485模块快速上手多摩川绝对式编码器,包括硬件连接、STM32配置、协议解析及清零操作。通过具体的代码示例和调试技巧,帮助开发者高效实现编码器数据读取和清零功能,特别适合STM32单片机开发者参考。

weixin_30599769的博客 193

android 应用后台 闪退,使用Fragment应用放置后台很久再次进入出现闪退的解决方法...

解决办法:在FragmentActivity里oncreate方法判断savedInstanceState==null才生成新Fragment;否则不做处理@OverrideprotectedvoidonCreate(BundlesavedInstanceState){if(savedInstanceState!=null){savedInstanceState.putParcel...

weixin_32108979的博客 1036

ESP32系列之LVGL(四):输入设备(外部按键)对接

本文详细介绍了如何在ESP32上使用LVGL库对接外部按键作为输入设备,包括硬件连接、驱动层实现和LVGL输入设备移植。通过具体代码示例和实战案例,帮助开发者快速实现按键控制UI界面,解决常见问题如按键无反应和控件跳转不正常。

weixin_30907935的博客 242

解决Android被系统回收,重打开崩溃等问题

流程再现:应用入口FirstActivity,FirstActivity中打开SecondActivity,Second中用了First的静态变量list。如下: public class FirstActivity extends BaseActivity { public static List list; @Override protected void onC

鑫哥的博客 9896

瑞萨RA6M4平台I2C驱动移植实战:MPU6050传感器集成指南

本文详细介绍了在瑞萨RA6M4平台上进行I2C驱动移植并集成MPU6050传感器的实战指南。通过FSP配置工具添加I2C主栈,适配MPU6050官方驱动,实现传感器数据读取与调试,为嵌入式开发提供完整的解决方案。

banana的博客 109

Mamba vs YOLO:目标检测选型指南(附实际项目对比)

本文深入对比了Mamba和YOLO在目标检测领域的性能差异与应用场景。通过实际项目数据,分析了两者在城市交通监控、工业质检等场景下的表现,提供了详细的选型指南和部署优化建议,帮助开发者根据实时性、精度等需求选择最适合的解决方案。

weixin_29062255的博客 369

APP进入后台,Android回收内存后,在进入app出现显示异常

故障现象: 首页tab是MainActivity里,嵌套一个大Fragment,然后用ViewPager来加载里面的4个Fragment来作为底部tab切换。 当进入其他页面,主页MainActivity可能被内存回收(一般情况不会被回收)。 想要触发此现象,可以有必现的两种方法进行触发来复现: 先打开APP后,打开“系统设置”,切换语言,再次回来APP即可。 先打开APP后,打开“开发者模式”...

Dream Fly的专栏 1216

Arch Linux 命令大全,值得收藏!

Arch Linux 是一款轻量级、高度可定制的 Linux 发行版,以其简洁和强大的特性深受高级用户喜爱。但对于新手来说,完全掌握 Arch Linux 的操作需要时间和实践。本文将为您详细介绍常用的 Arch Linux 命令,涵盖系统管理、文件操作、用户管理、软件安装与管理、网络配置和磁盘管理等内容,帮助您更高效地使用 Arch Linux。

网络技术联盟站 974

Android中Activity由于内存不足被回收,临时数据和状态如何保存

应用中有一个Activity A,用户在Activity A的基础上启动了Activity B,Activity A就进入了 停止状态,这个时候由于系统内存不足,将Activity A回收掉了然后用户按下Back键返回 Activity A,会出现什么情况呢?这个参数在一般情况下都是 null,但是如果在Activity被系统回收之前,通过onSaveInstanceState()方法保存数据,这个参数就会带有之前保存的全部数据,我们只需要再通过相应的取值方法将数据取出即可。

weixin_51280823的博客 763

【同等学力】01-逻辑符号表达

F(x): x是确诊者,G(x):x有症状F(x): x是老人,G(x):x是宠物,L(x,y): x喜欢y。

super_mochi1 1881

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2710

android系统相机的使用、及解决拍照闪退的问题

转自  http://blog.youkuaiyun.com/lang791534167/article/details/39647263 相机已成为android手机不可或缺的一部分,我们在开发可能也会涉及到关于相机的使用,以及在使用中会遇到一些问题(重点),下面把我个人的一点经验贴出来,仅供大家参考学习。 最简单的方式直接调用系统相机进行拍照,虽然能满足拍照的要求,但拍照的功能和界面却局限

qq_25474979的博客 5193

数字人接大模型第二步:语音克隆

推荐XTTS-v2项目,由Coqui公司开发的语音生成模型,专为多语言语音克隆和生成设计。它支持17种语言,包括英语、西班牙语、法语、德语、意大利语、葡萄牙语、波兰语、土耳其语、俄罗斯语、荷兰语、捷克语、阿拉伯语、中文、日语、匈牙利语、韩语和印地语。XTTS-v2的核心优势在于其仅需6秒的音频片段即可实现语音克隆,无需大量的训练数据。此外,它还支持情感和风格转移、跨语言语音克隆以及多语言语音生成,采样率高达24kHz。地址:https://github.com/archwesome/XTTS-v2。

404

Android如何优雅的处理应用退到后台进程被回收重新打开引发闪退

应用退至后台如果进程被系统回收,这个时候我们点击应用如果在应用中没有做相应的处理可能会引发闪退的异常,在谈到如何处理闪退之前我们应该先了解一下什么情况下应用退至后台会被系统干掉了?......

aaaym的博客 5990

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

react-native:解决使用webView后部分场景在安卓10崩溃闪退问题

本文详细记录了在Android 10版本中遇到的WebView导致应用闪退的问题及其解决过程。问题表现为在屏幕不可视区域加载或切换WebView时,应用会崩溃。解决方案包括在进入页面时延迟加载WebView以及设置自定义返回事件,通过销毁WebView后再进行页面切换,从而避免闪退。此外,还分享了定位问题和解决问题时遇到的挑战。

weixin_42504805的博客 1203

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android开发 webview闪退,Android5以后WebView闪退问题

Android4.4开发项目中的webview在Android各个版本运行的飞起,可是项目升级,最低版本适配5.0之后,webview各种闪退问题真让人头大!!!!!!!!!!!!!!!啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊我太难了!仔细对比了两个项目的差异,有所发现:Android5.0的build.gradle,注意implementation 'androidx.appcompat:appcompa...

weixin_42292183的博客 2954

应用闪退分析与 uniapp 安卓原生插件开发

记录一次 App 闪退分析的过程,了解不同机型对于后台进程回收的策略,并借助 uniapp 原生插件的能力解决相关 bug。

yuanfgbb的博客 1863

Android app闪退后fragment重叠bug解决方法

方法一 通过注释掉这句话,这样主 Activity 因为种种原因被回收的时候就不会保存之前的 fragment state @Override protectedvoidonSaveInstanceState(Bundle outState) { //如果用以下这种做法则不保存状态,再次进来的话会显示默认tab //总是执行这句代码来调用父类去保存视图层的状态 //super.onSaveInst...

冬瓜去哪儿的博客 1309

android 闪退分析,Android TimeoutException闪退记录及解决

此问题在oppo R9 系列的手机出现较多,而且主要集中在Android 5.1-6.0的手机系统。TimeoutException,在Android 系统里会出现下面这些,在释放资源时,因耗时导致的,可能不是10s,可能会是20s,30s,60s,120s。具体跟手机有关。android.database.CursorWindow.finalize() timed out after 10 se...

weixin_39593519的博客 1295

android全局变量闪退,安卓使用Intent开启照相机拍照时闪退的处理

1.现象在使用安卓手机的一些应用调用照相机时,我们会发现有时候当我们拍照完毕时,程序会出现闪退,非常影响用户体验。目前项目中也有类似的拍照上传功能,当使用米3手机测试时,拍照上传功能可以正常使用,当我们换上红米或者其他一些比较早或者比较低端的手机时,就出现了闪退的问题。1.1开启相机的intent/* mPictureCachePath为当前照相相片的存储路径 */pictureCachePath...

weixin_42246401的博客 878

记一次使用android studio分析app闪退原因的过程

因为是在页面切换的时候,发生闪退的,所以要从页面切换的时候寻找问题,首先要搞懂页面是如何切换的。 后来经过复盘整个执行过程,页面切换的流程应该是:Finish(销毁变量)-> revice(消息回调)-> stop(停止发送)其实就是stop完了,在stop之前消息就已经到达了,但是变量又被finish销毁了,所以最终报空指针异常 既然找到了问题,肯定就要解决问题,试过把stop放在onDestroy的第一句代码调用依然会有几率会报错,因为stop只是改变布尔变量值,并不能立即强制结束线程。所以只能在消息

weixin_44223957的博客 4705

Android开发中存在的闪退、及解决状态

1:浏览器闪退 原因:浏览器中开启了缩小放大按钮(ZoomController),在开始进入浏览器时,缩小放大按钮会出现,并在一段时间后渐变消失,当在它完全消失前退出浏览器,在一些android系统上回出现异常,且此异常无法try/catch。 解决办法:如下  @Override protected void onDestroy() {     if (webv

匿名者的博客 1万+

Android注册时输入字符闪退,Android开发中存在的闪退、及解决状态

1:浏览器闪退缘由:浏览器中开启了缩小放大按钮(ZoomController),在开始进入浏览器时,缩小放大按钮会出现,并在一段时间后渐变消失,当在它彻底消失前退出浏览器,在一些android系统上回出现异常,且此异常没法try/catch。解决办法:以下@Overrideprotected void onDestroy() {if (webvContent!= null) {webvConte...

weixin_39605463的博客 422
上一篇: Phonegap VS AppCan 差异性对比
下一篇: IOS热修复之 JSPatch 实现方案
老树临风_
博客等级 码龄12年 41粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值