Android页面跳转出现卡顿或者ANR,可以从哪些方面进行优化? 10C

情景如下:在A页面执行完拍照上传或者选择本地图片上传后,跳转到B页面,程序卡住,无法操作,但是如果不传照片德华程序跳转压根就不会卡住。在开发过程中,每当发生页面跳转时均会调用this.finish()刚发对当前页面进行销毁,尽管如此,跳转发生时APP卡顿依旧存在,且频频发生,请问各位前辈可有好的解决办法,求传授,小生将对此不胜感激!

7个回答

用Handler试试

wj_xupt
j.w@Android&Bsp 这个我在有操作或者页面UI刷新的都是通过handler进行消息传递的,现在的情况时A页面选择本地照片或者拍照上传后,跳转到B页面时,B页面卡住不动了,什么也操作不了....
2 年多之前 回复

你要跳转到的页面是不是有很多的数据请求或者说是有写在主线程里的耗时请求

wj_xupt
j.w@Android&Bsp 在要跳转到的页面的确有数据请求和图片轮播组件,但是数据请求我是另开线程执行,然后通过handler与主线程进行交互的,现在卡住的时机(假设A->B)是在B页面onResume()完毕和A页面onDestory()完毕后,严重丢帧报错
2 年多之前 回复

不要所有数据都一次性请求,根据需求,有些数据当需要的时候再去请求,另外记得开子线程,别在主线程里做耗时操作

wj_xupt
j.w@Android&Bsp 嗯,是的,数据请求我是另开线程请求的,数据只是在初始化onCreate()的时候请求的,请求的数据时简单的JSON数据,有关操作权限的数据
2 年多之前 回复

不要再主线程进行好事操作,把所有好事操作放到子线程中去处理,处理完成后通过任何一种线程间通信方式去更新UI就好了。

wj_xupt
j.w@Android&Bsp 对,正如您所说,我是这样做的
2 年多之前 回复

导致ANR的原因一般分三种:key dispatch timeout,broadcast timeout和service timeout。
具体是什么导致的ANR可以查看log,adb shell进手机,在/data/anr/traces.txt里面有记录所有的anr和调用栈,可以直接定位优化代码。

wj_xupt
j.w@Android&Bsp 嗯嗯,现在ANR的提示不怎么出现了,但是程序在发生页面跳转时彻底卡死了...
2 年多之前 回复

你这问题感觉就是内存泄漏了,检查代码,把该close的close

问题出在你在onCreate里面加载太多数据,勇asyntask去加载

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问