android 之 线程创建与后台切换

来源:互联网 发布:光辉岁月 知乎 编辑:程序博客网 时间:2024/05/17 02:07

需要线程标志的原因:

  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游戏编程之从零开始

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击