当前位置:编程学习 > wap >>

android平台真的不能完全解决anr问题吗,失望中。。。

最近做了一个游戏,图片很多,所以要在每一个页面进行次图片释放和加载,就是在点击页面比如:“开始” 按钮的时候,跳到一个activity用线程执行了图片释放和对下一个页面的图片加载,加载完成后跳到游戏中。
这样操作一两次可能也没什么问题,但是再操作几次就会报anr。真是无语。
各种线程都试过了,android自带线程也试过,不好使。

求大牛指点! --------------------编程问答-------------------- 此帖绝对高亮…… --------------------编程问答-------------------- 优酷 “我真的是砖家” 的粉吗? --------------------编程问答-------------------- anr是什么东东? --------------------编程问答-------------------- 这个时候如果不需要和用户交互的话,可以做一个ProgressBar,等待后台线程处理结束,这样不响应交互应该不会有ANR的问题。不过解决ANR还是要合理安排线程比较好,把不需要用户参与的操作放到后台,避免在UI线程执行耗时操作。 --------------------编程问答--------------------
引用 4 楼 heaven7000 的回复:
这个时候如果不需要和用户交互的话,可以做一个ProgressBar,等待后台线程处理结束,这样不响应交互应该不会有ANR的问题。不过解决ANR还是要合理安排线程比较好,把不需要用户参与的操作放到后台,避免在UI线程执行耗时操作。


我做了啊,不行啊,耗时操作放到线程里了,也用了progressBar, 什么线程都试过了,没用 --------------------编程问答--------------------
引用 3 楼 xubingok 的回复:
anr是什么东东?

application not response --------------------编程问答--------------------
引用 2 楼 june1991 的回复:
优酷 “我真的是砖家” 的粉吗?


我就是那位啊,难道不知道我是程序员啊 --------------------编程问答-------------------- 在activity里的onPause里面做activity是否finishing判断,如果是则释放资源。。 --------------------编程问答-------------------- 话说你最好学下游戏开发~~做游戏不是那样搞的勒 --------------------编程问答--------------------
引用 8 楼 meichen8050753 的回复:
在activity里的onPause里面做activity是否finishing判断,如果是则释放资源。。

呵呵,这个不行的,你释放了,不代表surfaceview已经销毁了,可能还在画,会报bitmap has recycle的错误。我做游戏已经1年了,谢谢提醒。 --------------------编程问答--------------------
引用 1 楼 yiyaaixuexi 的回复:
此帖绝对高亮……

哦,那是,那是。。。有美女沙发,能不靓吗。 --------------------编程问答--------------------
引用 5 楼 wangrishen123 的回复:
引用 4 楼 heaven7000 的回复:
这个时候如果不需要和用户交互的话,可以做一个ProgressBar,等待后台线程处理结束,这样不响应交互应该不会有ANR的问题。不过解决ANR还是要合理安排线程比较好,把不需要用户参与的操作放到后台,避免在UI线程执行耗时操作。


我做了啊,不行啊,耗时操作放到线程里了,也用了progressBar, 什么线程都试过了,没用


这个不大明白了,按说ANR是相应超时,有了progreBar的话,就不相应用户了,还出ANR,是不是有其它的问题啊?是不是还有耗时的线程没有结束? --------------------编程问答--------------------
引用 4 楼 heaven7000 的回复:
这个不大明白了,按说ANR是相应超时,有了progreBar的话,就不相应用户了,还出ANR,是不是有其它的问题啊?是不是还有耗时的线程没有结束?

恩,我也是啊,郁闷啊,你这个progreBar只不过是线程处理过程中显示的处理进度效果,主要还是靠线程去解决耗时程序,但是最终结果是不行的,可能有的人说行,如果你点击一次执行的话可能遇不到这个anr错误,不信,你可以多点几次,或者连续点击几次,就会出现这个问题了。还有就是很多人用线程解决耗时程序是处理网络连接,和其它之类的,如果执行图片释放,你们可以试试,我也很不解。 --------------------编程问答-------------------- 我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决

--------------------编程问答--------------------
引用 14 楼 guoyoulei520 的回复:
我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决

可以加我qq帮我看看吗,我qq:285607570 --------------------编程问答-------------------- 求解决 --------------------编程问答-------------------- 好好再熟悉下 Activity的生命周期
思路没问题,估计是释放和加载的地方不对
另外一方面就是,一个游戏只需要一个view和一个activity足以
即使手机网游也只需要一个view和一个activity足以

PS:Himi指点的  --------------------编程问答--------------------
引用 14 楼 guoyoulei520 的回复:
我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决


同意,线程要用AsyncTask,不要直接开Thread --------------------编程问答--------------------
引用 18 楼 jnhoodlum 的回复:
引用 14 楼 guoyoulei520 的回复:
我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决


同意,线程要用AsyncTask,不要直接开Thread


谁能帮我看看吗,线程AsyncTask也试过了,activity生命周期我也理解,确实没则了。 --------------------编程问答--------------------
引用 17 楼 yiyaaixuexi 的回复:
好好再熟悉下 Activity的生命周期
思路没问题,估计是释放和加载的地方不对
另外一方面就是,一个游戏只需要一个view和一个activity足以
即使手机网游也只需要一个view和一个activity足以

PS:Himi指点的

我就是用的view和activity哦,每个页面都是,activity生命周期我理解啊,但是不知道莫名的错误哦,感兴趣的可以加我qq,我把代码发给你们研究下,我项目已经做好了,就是这个anr有时冒出来,头疼。。。 --------------------编程问答-------------------- 楼主。这个还是线程的问题。不是android的问题吧。。

多线程和异步操作你真的熟悉了吗 --------------------编程问答--------------------
引用 21 楼 peijiangping1989 的回复:
楼主。这个还是线程的问题。不是android的问题吧。。

多线程和异步操作你真的熟悉了吗

我对线程了解的不是很多,只会用,但是很多种线程,我都一一试过了,网上资料也看了不少,解决不了我的错误啊,网上关于surfaceview释放图片的资料也是少之甚少,我看也有和我一样问题的,也没得到解决。说是没用的啊,能帮我看看吗,我qq:285607570 --------------------编程问答-------------------- 还有我在网上看到了一个说在surfaceview的onDestroy方法中释放图片,但是onDestroy方法是在Activity  finish之后才会促发,而且在跳到第二个页面的时候,可能还在执行onDestroy 的图片释放,所以会影响到下个页面图片的加载,会报图片溢出,ps:我在网上看到有人是这样释放的,但是有这种错误,没得到解决。    所以我开了个线程处理当前页面的图片释放和下一页面的图片加载,然后执行跳转,但是有时会出现anr,特别是当我点击跳转按钮多次的时候发生的比较大,哪怕onTouch我不让它执行了,但是还在响应onTouch事件。 --------------------编程问答--------------------
引用 23 楼 wangrishen123 的回复:
还有我在网上看到了一个说在surfaceview的surfaceDestroyed方法中释放图片,但是onDestroy方法是在Activity finish之后才会促发,而且在跳到第二个页面的时候,可能还在执行onDestroy 的图片释放,所以会影响到下个页面图片的加载,会报图片溢出,ps:我在网上看到有人是这样释放的,但是有这种错误,没得到解决。 所以我开了个线程处理当前页面的图片释放和下一页面的图片加载……
--------------------编程问答-------------------- 话说我跟你遇到的是同一个问题啊,求教啊 --------------------编程问答-------------------- 我的问题是出在onTouch上,时不时就会报anr
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,