android 每次重启手机自己的程序会冒出已停止对话框

最近在测试自己的android程序的时候突然发现一个以前没怎么注意的问题,现象时每次重启手机,都会弹出“xxx 程序已经停止”,xxx就是自己写的程序,因为以前没怎么重启手机进行测试一直没有发现这个问题,最近偶然重启手机发现,每次都会弹出相同的对话框。下面是我的探索。

一开始怀疑这是手机的问题,以为是之前错误关闭导致手机重启会出现这个问题。但是每次重启手机都会弹出相同的对话框让我怀疑是自己的程序出了问题。

所以怀疑到自己的程序上来了,一般出现程序已经停止,说明自己的程序某个地方出了问题,因为是退出了程序后再重启还是会弹出这个对话框,难道是退出的方式不对,导致部分子线程没有关闭?为此,我还去看了有关android正常退出的资料,还以为是用system.exit强制退出会导致子线程没有退出,但是很遗憾,我把自己程序的所以子程序都quite了还是出现这个问题。甚至把子程序都删掉了依然存在这个问题。

通过现象,退出程序还是会弹出这个对话框,很肯定的是程序退出了,但是有部分东西没有关闭。既然不是子线程,那只可能是一些服务广播之类的没有关闭,于是我注销掉了用到的广播,但是依然还是存在这个问题。这让我百思不得其解啊。后来通过直接把主界面的所有代码都注释了,发现依然,如此,我恼火了。连主代码都注释了还出这个问题,第一反应,会不会是在apk启动配置的时候就出问题了,很自然的想到了配置文件,androidmanifest.xml,果然,在配置文件里发现有一段代码是注册sdcard广播的,我把它注释掉后,重启手机,对话框再没有出现。其实很奇怪,为什么程序在结束的时候系统没有帮忙把广播给注销掉。在这里还得提醒一下就是关于广播,如果你在多个activity里面切换,而activity里面含有广播的注册而你有没有谁创建谁释放的习惯的话,广播会的资源不会像其他java对象一样系统会自动release掉,它必须得手动释放才能彻底释放空间,否则有可能你切换多次之后程序就会因为内存泄露而溢出导致程序crash。

通过这件事了解的。首先不要的代码要及时注释或者删掉,否则可能导致遗忘而造成问题。其次,要养成一种习惯,虽然在程序退出的时候程序会帮你释放一部分资源,但是自己申请的资源,哪怕程序结束了也要及时释放。再有在一般情况下我还是建议用java代码进行广播的注册和注销,否则就有可能出现这样的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值