浏览 6640 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-29
最后修改:2010-12-29
MP3Extractor Unable to resync Signalling end of stream,有知道的朋友告知一下为什么 用SurfaceView作了一个简单的东西,开个线程,循环显示多个图片,发现在点击Home按钮之后,再次运行这个程序的时候,报 Thread already started异常。 而surfaceDestroyed方法中,对同步标志也作了处理,开始怀疑是否Home按钮不触发surfaceDestroyed方法,结果Log之后,发现也触发了。 public void surfaceDestroyed(SurfaceHolder holder) { if(animThread.isAlive()) { run = false; } } 上网google了半天,发现国外一个网站上说是android的bug,有个很挫的解决方式: public void surfaceCreated(SurfaceHolder holder) { //当用户点击了Home按钮时,线程实际上没有停止,这里如果没有Try会有异常,但这个处理不完美,暂时没有更好的处理 if(!animThread.isAlive()) { try { animThread.start(); } catch(IllegalThreadStateException itse) { animThread.resume(); } } } 其实,这个问题的根本原因在于Home键和Back键的区别,以下是一个引用网友的文章 android的手机的back键默认行为是finish处于前台的Activity的即Activity的状态为Destroy状态,再次启动该Activity是从onCreate开始的。 而Home键默认是stop前台的Activity即状态为onStop而不是Destroy,若再次启动它,则是从OnResume开始的,即会保持上次Activityd的状态。 back键也有例外的,按back键不会关闭Activity的,比如播放音乐,按了back键之后仍可以继续播放音乐,这是Music这支ap已经重写了back键的事件处理。 所以,我的这个处理就变得很简单,在onResume中重新调用加载该View就可以了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-14
音乐播放器好像是因为它的Service没有被停止,才会播放的;不是纯粹的Activity。
|
|
返回顶楼 | |
发表时间:2011-02-19
音乐播放的功能是要放在Service中进行处理的。
|
|
返回顶楼 | |