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

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

求大牛指点!
...全文
479 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
打杂家的 2012-02-07
  • 打赏
  • 举报
回复
我的问题是出在onTouch上,时不时就会报anr
打杂家的 2012-02-07
  • 打赏
  • 举报
回复
话说我跟你遇到的是同一个问题啊,求教啊
Colder 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 wangrishen123 的回复:]
还有我在网上看到了一个说在surfaceview的surfaceDestroyed方法中释放图片,但是onDestroy方法是在Activity finish之后才会促发,而且在跳到第二个页面的时候,可能还在执行onDestroy 的图片释放,所以会影响到下个页面图片的加载,会报图片溢出,ps:我在网上看到有人是这样释放的,但是有这种错误,没得到解决。 所以我开了个线程处理当前页面的图片释放和下一页面的图片加载……
[/Quote]
Colder 2011-11-01
  • 打赏
  • 举报
回复
还有我在网上看到了一个说在surfaceview的onDestroy方法中释放图片,但是onDestroy方法是在Activity finish之后才会促发,而且在跳到第二个页面的时候,可能还在执行onDestroy 的图片释放,所以会影响到下个页面图片的加载,会报图片溢出,ps:我在网上看到有人是这样释放的,但是有这种错误,没得到解决。 所以我开了个线程处理当前页面的图片释放和下一页面的图片加载,然后执行跳转,但是有时会出现anr,特别是当我点击跳转按钮多次的时候发生的比较大,哪怕onTouch我不让它执行了,但是还在响应onTouch事件。
Colder 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 peijiangping1989 的回复:]
楼主。这个还是线程的问题。不是android的问题吧。。

多线程和异步操作你真的熟悉了吗
[/Quote]
我对线程了解的不是很多,只会用,但是很多种线程,我都一一试过了,网上资料也看了不少,解决不了我的错误啊,网上关于surfaceview释放图片的资料也是少之甚少,我看也有和我一样问题的,也没得到解决。说是没用的啊,能帮我看看吗,我qq:285607570
小裴同学 2011-11-01
  • 打赏
  • 举报
回复
楼主。这个还是线程的问题。不是android的问题吧。。

多线程和异步操作你真的熟悉了吗
Colder 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 yiyaaixuexi 的回复:]
好好再熟悉下 Activity的生命周期
思路没问题,估计是释放和加载的地方不对
另外一方面就是,一个游戏只需要一个view和一个activity足以
即使手机网游也只需要一个view和一个activity足以

PS:Himi指点的
[/Quote]
我就是用的view和activity哦,每个页面都是,activity生命周期我理解啊,但是不知道莫名的错误哦,感兴趣的可以加我qq,我把代码发给你们研究下,我项目已经做好了,就是这个anr有时冒出来,头疼。。。
Colder 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jnhoodlum 的回复:]
引用 14 楼 guoyoulei520 的回复:
我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决


同意,线程要用AsyncTask,不要直接开Thread
[/Quote]

谁能帮我看看吗,线程AsyncTask也试过了,activity生命周期我也理解,确实没则了。
jnhoodlum 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 guoyoulei520 的回复:]
我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决
[/Quote]

同意,线程要用AsyncTask,不要直接开Thread
念茜 2011-10-31
  • 打赏
  • 举报
回复
好好再熟悉下 Activity的生命周期
思路没问题,估计是释放和加载的地方不对
另外一方面就是,一个游戏只需要一个view和一个activity足以
即使手机网游也只需要一个view和一个activity足以

PS:Himi指点的
Colder 2011-10-28
  • 打赏
  • 举报
回复
求解决
Colder 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 guoyoulei520 的回复:]
我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决
[/Quote]
可以加我qq帮我看看吗,我qq:285607570
凉凉二点凉 2011-10-28
  • 打赏
  • 举报
回复
我想看看你是怎么用线程做的?是用的AsyncTask还是啥?
好好看看代码,很有可能是代码原因引起的

PS:ANR问题肯定可以解决

Colder 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 heaven7000 的回复:]
这个不大明白了,按说ANR是相应超时,有了progreBar的话,就不相应用户了,还出ANR,是不是有其它的问题啊?是不是还有耗时的线程没有结束?
[/Quote]
恩,我也是啊,郁闷啊,你这个progreBar只不过是线程处理过程中显示的处理进度效果,主要还是靠线程去解决耗时程序,但是最终结果是不行的,可能有的人说行,如果你点击一次执行的话可能遇不到这个anr错误,不信,你可以多点几次,或者连续点击几次,就会出现这个问题了。还有就是很多人用线程解决耗时程序是处理网络连接,和其它之类的,如果执行图片释放,你们可以试试,我也很不解。
书行 2011-10-28
  • 打赏
  • 举报
回复

[Quote=引用 5 楼 wangrishen123 的回复:]

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


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

这个不大明白了,按说ANR是相应超时,有了progreBar的话,就不相应用户了,还出ANR,是不是有其它的问题啊?是不是还有耗时的线程没有结束?
Colder 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yiyaaixuexi 的回复:]
此帖绝对高亮……
[/Quote]
哦,那是,那是。。。有美女沙发,能不靓吗。
Colder 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 meichen8050753 的回复:]
在activity里的onPause里面做activity是否finishing判断,如果是则释放资源。。
[/Quote]
呵呵,这个不行的,你释放了,不代表surfaceview已经销毁了,可能还在画,会报bitmap has recycle的错误。我做游戏已经1年了,谢谢提醒。
meichen8050753 2011-10-28
  • 打赏
  • 举报
回复
话说你最好学下游戏开发~~做游戏不是那样搞的勒
meichen8050753 2011-10-28
  • 打赏
  • 举报
回复
在activity里的onPause里面做activity是否finishing判断,如果是则释放资源。。
Colder 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 june1991 的回复:]
优酷 “我真的是砖家” 的粉吗?
[/Quote]

我就是那位啊,难道不知道我是程序员啊
加载更多回复(6)

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧