最近在寫一個游戲,使用到了SurfaceView,在繪制時使用while(true)來作為條件,等按返回鍵程序退出後看log,發現while(true)這個循環仍然為運行,為什麼Activity結束的時候這個while(true)還在運行?
這是activity生命周期問題,因為你的while(true)循環並沒有結束,因此線程一直在運行,activity調用finish的時候並不是要真正結束activity,只有activity實例沒有使用而且內存不足才會主動結束此activity,但是線程仍然在繼續運行,所以不可能立即結束掉。
通過設置標志位來解決,while(flag),然後你結束游戲的時候或者在finish前將flag標志位置為false,即可結束游戲主循環。搞定!