现在的位置: 首页 > 综合 > 正文

android 之 线程创建与后台切换

2013年10月09日 ⁄ 综合 ⁄ 共 594字 ⁄ 字号 评论关闭

需要线程标志的原因:

  th = new Thread();
  th.start();

若没有flag标志:

当按下back或home键时,SurfaceView的状态变化:

back按钮:SurfaceDestroyed->  构造函数-> SurfaceCreated -> SurfaceChanged

home按钮:SurfaceDestroyed->  SurfaceCreated -> SurfaceChanged

1.   

th = new Thread();
th.start();  应该尽量放在一起,以减少不必要错误。如:防止重复执行start()而出错。

2. 两者放在一起之后,

如果没有结束线程的操作,就会导致只不断创建线程,导致线程越来越多(如果线程是死循环的话(在游戏中,经常是死循环的线程),则线程不会自己结束)。

解决方法: 在 SurfaceDestroyed 中设置flag为false。 此flag 是线程while死循环的条件:while(flag),这样在 SurfaceDestroyed执行后,线程也自动销毁。

3. 那么,为了保证在按了home后,线程也能够重新创建, 那么线程初始化和执行语句只能 添加在SurfaceCreated中,才能保证无论是按back还是home,再次返回时都能够重新创建线程。

结论: 上面3。

 

 

 

 

 

 

 

 

参考书:android游戏编程之从零开始

 

 

 

 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.