
闪退,多指在移动设备(如iOS、Android设备)中,在打开应用程序时出现的突然退出中断的情况(类似于Windows的应用程序崩溃)。多表现为:应用程序画面一闪而过,随即退回到桌面。
闪退的原因和处理方法
1、缓存垃圾过多
平时在使用软件的过程中,会产生一些垃圾文件,如果长时间不清理会导致手机越来越卡,也会出现闪退状况。
进入设置–应用程序——全部——找到有问题的应用程序,清除数据或者缓存。(注:清除数据,会清除掉应用的个人设置、账户信息等。)
2、运行程序过多
如果不进行设置,很多软件都会自己运行,而手机后台程序过多会造成内存不足,从而造成应用闪退。如出现软件闪退,可先清理内存后再试试。
3、手机杀毒软件
部分手机软件存在着恶意代码,会被杀毒软件拦截因而不能正常进入,应该通过绿色下载平台或者使用软件商店来下载安全系数较高的游戏。
(注:以上三个原因都现在都可以通过安全软件清理,轻松解决。但需要注意在删除一些大型文件时请谨慎。)
4、应用版本问题
如果应用的版本较低,会导致应用软件不兼容,造成闪退。如果是版本太旧,更新为新版本即可。
如新版本如果出现闪退,是应用改版本还在调试中,无需担心,会很快修复。
5、网速问题
部分软件需要一个稳定的网络,使用的是2G/3G网络,造成闪退的可能性比较大,建议在有WiFi的情况下玩比较好。
6、缺少数据包
一些大型游戏需要数据包才能运行。所以要先安装好数据包才能使用。
7、系统不兼容
部分软件对版本有一定的要求,如果系统版本过低,软件是不能支持的,所以会闪退。
8、分辨率不兼容
一些软件对手机分辨率有一定的要求,如果手机分辨率不兼容,有部分软件就容易出现闪退或其它错误。
anr错误顾名思义就是应用无响应,这种情况是在安卓40以上的系统,你把耗时 *** 作放在主线程里面执行了,引发了主线程的阻塞,出现了anr。解决办法:加入安卓消息机制,子线程处理耗时 *** 作,主线程更新ui。
在整个开发阶段和测试阶段,出现了很多预料之外的事情,比如size是1M多的json文件解析、高清导致OOM、莫名其妙的崩溃等。这些意外无一不影响开发计划,增大压力,最直接的表现是晚上加班和周末加班。写代码和修改代码远比想象中的难控制。用户体验增加了代码的细节处理难度、逻辑处理难度,android莫名的崩溃增加解决bug的难度。就这次开发,总结了一些经验。测试人员经常会报告小米1手机运行壁纸软件时会崩溃的问题,崩溃日志是:javalangRuntimeException:FailedtoregisterinputchannelChecklogsfordetailsatandroidviewInputQueuenativeRegisterInputChannel(NativeMethod)atandroidviewInputQueueregisterInputChannel(InputQueuejava:92)atandroidviewViewRootsetView(ViewRootjava:570)atandroidviewWindowManagerImpladdView(WindowManagerImpljava:177)atandroidviewWindowManagerImpladdView(WindowManagerImpljava:91)atandroidwidgetToast$TNhandleShow(Toastjava:411)atandroidwidgetToast$TN$1run(Toastjava:337)atandroidosHandlerhandleCallback(Handlerjava:587)atandroidosHandlerdispatchMessage(Handlerjava:92)atandroidosLooperloop(Looperjava:130)根据日志推测该崩溃是和Toast有关。可是问题就奇怪了,我在代码中只调用ToastmakeTest()show(),为什么会引起这个崩溃。然后根据测试人员的反馈,当设置壁纸成功后,会引起这个崩溃,而且测试人员是在频繁的 *** 作下报出来这个问题的。根据这个现象,推断有可能以下两个原因引起的,一是,设置壁纸引起桌面发生变化,桌面发生变化时d出toast会导致崩溃;二是,频繁不间断的d出toast会引起这个问题。而之后测试人员反馈了一个新的现象,当进行新浪微博分享失败后(前提是该新浪微博帐号是有问题的),再去浏览壁纸也导致了该崩溃,而且此现象仅出现了一次再也不复现。该bug最终是遗留解决。针对这种问题,在以后的版本开发中肯定也会出现,怎么避免它再次出现。我总结了从几个方面做努力。先借来小米1手机来玩,学习手机发烧友的习惯和测试人员的思维,然后体验小米1手机,对小米1要有更深入的认识;和小米进行沟通,还没有认识牛逼的朋友在小米做开发,所以可以先在小米论坛上做活跃用户,主动和对方和网友沟通;了解inputchannel是什么功能,什么机制,研究anroid23的关于这块的native代码。刚开始进入测试阶段时,测试人员每天都会报告壁纸软件频繁崩溃的问题。对于一些简单的崩溃问题,一般是空指针而且还复现,就不在这里说了。测试报告说,浏览壁纸保存壁纸,预览壁纸和设置壁纸时经常的崩溃,这种崩溃没有规律可复现但是很频繁出现。这种问题的原因是OOM,比如,在MX2手机上,桌面预览要使用的位图大小是1280X800X2X4字节约等于8M,软件中的位图各种处理(缩放、剪切、渲染、多个activity同时存在等)会导致内存使用量飙升到50多M,当超过64M左右时,软件会报OOM错误。没有彻底解决OOM的方法,网上有很多避免OOM的方法,比如延迟加载、及时回收内存、弱引用等。另外在生成bitmap的地方要使用try解决了这些崩溃问题后,还会有新的导致崩溃的原因。测试人员说中午吃完饭回来,打开壁纸软件突然崩溃。分析这个现象后,找到原因是,长期待机情况下android杀掉了壁纸软件的进程。但是疑问出现了,此时进程被杀掉了之后点击app的icon,不是又重新打开了进程,重新运行了吗,怎么会崩溃呢。经过分析,发现有个诡异的地方是,android待机后把壁纸进程给杀掉了,但是该软件的activity并没有从task中删除掉,所以当再点击app的icon时,会执行task顶层的activity的onCreate,而onCreate里边的一些东西还未初始化,会因为空指针而崩溃。后来,测试人员报告了一个诡异的bug,安装软件后第一次打开软件,欢迎界面的显示不出来,以后每次打开软件欢迎界面的都能打开出来。是一个jpg文件,在raw中。最后找到原因是,在decodebitmap,scalebitmap时,其中要 *** 作的一个变量imagewidth在第一次时是0,没有赋值,之后再 *** 作就不是0,赋值了。但是为什么会这样,最后找到原因了,imagewidth是一个全局静态变量,该全局静态变量在另外一个线程中会被赋值(赋上屏幕的宽度)。由于线程的异步问题而导致第一次imagewidth是0。后来每次打开软件,并不是进程重启,而是activity重启,imagewidth赋的值还在。
以上就是关于怎么找到安卓中程序闪退的原因全部的内容,包括:怎么找到安卓中程序闪退的原因、用安卓手机测试APP时,经常崩溃,出现d框“xxx程序已经停止运行”,一般是什么问题代码没有查出来。、诡异,Unity在安卓运行崩溃问题,求助等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)