IllegalThreadStateException

IllegalThreadStateException

只要完善我的应用程序,并在用户离开后恢复它即可。当应用程序还原时,我得到一个IllegalThreadStateException,这很烦人。谷歌给出的Lunar Lander示例中存在此问题。有没有人找到使用SurfaceView时恢复工作的方法?

最佳答案

我认为这是由于Surface和Activity的处理方式存在差异而引起的。当您离开LunarLander应用程序时,表面被破坏(调用surfaceDestroyed),但活动仅被暂停(调用onPause)。恢复活动后,将创建曲面(调用surfaceCreated),并尝试再次启动绘图线程。

这意味着创建线程是在Activity的生命周期中发生的,而销毁线程是在SurfaceView的生命周期中发生的,这并不总是相对应的,因此就是IllegalThreadStateException。解决方案是将线程绑定到一个生命周期或另一个生命周期,而不是两个生命周期。

我认为this thread提出了一种可能的解决方案,尽管我不知道它是否有效。

10-07 22:42