只需完善我的应用程序,并在用户离开后恢复它即可。当应用程序还原时,我得到一个IllegalThreadStateException,这很烦人。google提供的Lunar Lander示例中存在此问题。有没有人找到使用SurfaceView时恢复工作的方法?
我认为,这是由于Surface和Activity的处理方式不同而引起的。当您离开LunarLander应用程序时,曲面被破坏(调用surfaceDestroyed),但活动仅被暂停(调用onPause)。恢复活动后,将创建曲面(调用surfaceCreated),并尝试再次启动绘图线程。
这意味着创建线程是在Activity的生命周期中发生的,而销毁线程是在SurfaceView的生命周期中发生的,这并不总是相对应的,因此是IllegalThreadStateException。解决方案是将线程绑定到一个生命周期或另一个生命周期,而不是两个生命周期。