第24節 - LibGDX: Disposable Interface
這一節我會介紹LibGDX的Disposable介面,這裡會簡單介紹甚麼時候須知用到Disposable介面和dispose()方法。
Interface - Disposable
我在第12節 - LibGDX: Texture, TextureRegion, SpriteBatch & Sprite介紹過Disposable介面,以下重溫一下。
Texture類別
Texture類別須要在程式結束時在dispose()方法內進行銷毀,因為Texture類別存放在com.badlogic.gdx.graphics下,繼承自Object,實現了Disposable介面(interface),凡是實現了Disposable介面,都應該在程序結束時對該類進行銷毀。
以下是LigGDX官方API文件:

SpriteBatch類別
SpriteBatch類別和Texture類別一樣,它須要在程式結束時在dispose()方法內進行銷毀,因為SpriteBatch類別存放在com.badlogic.gdx.graphics下,繼承自Object,實現了Disposable介面(interface),凡是實現了Disposable介面,都應該在程序結束時對該類進行銷毀。
以下是LigGDX官方API文件:

Sprite類別
但是Sprite類別就不須要在程式結束時在dispose()內進行銷毀,因為Sprite類別存放在com.badlogic.gdx.graphics.g2d下,繼承自Object,沒有實現了Disposable介面(interface),所以Sprite類別就不須進行銷毀。
以下是LigGDX官方API文件:

實作Disposable介面的類別
要知道那個類別須要在程式結束時在dispose()方法內進行銷毀很簡單,逄類別有實作Disposable介面的都須要。
以下列出LigGDX所有實作Disposable介面的類別,紅色方格是常用的類別:

- Disposable Interface官方文件。
- 紅色方格是常用的類別。
例子1 - Main Class (MyDemo2)實作ApplicationListener

- 把MyDemo2實作ApplicationListener介面。
- 把texture和batch物件用dispose()方法進行銷毀。
例子2 - FacebookScreen類別實作Screen介面

- 注意,Screen介面的dispose()方法和Game類別的dispose()方法不同,根據LibGDX官方文件解釋,Screen介面的dispose()方法是不會自動執行,所以我們必須在畫面轉換時在hide()執行dispose()方法。
- 把texture和batch物件用dispose()方法進行銷毀。
dispose() in ApplicationListener & Screen Interface
dispose() in ApplicationListener Inferface
以下列出LigGDX官方文件的ApplicationListener介面,其中dispose()方法會在Application銷毀時自動執行:

- ApplicationListener Interface官方文件。
- dispose()方法會在Application銷毀時自動執行。
以下列出LigGDX的生命週期:

- dispose()方法會在Application銷毀時自動執行。
dispose() in Screen Interface
以下列出LigGDX官方文件的Screen介面,注意,與會ApplicationListener介面不同,Screen介面的dispose()方法是不會自動執行,所以我們必須在畫面轉換時在hide()執行dispose()方法:

- Screen Interface官方文件。
- dispose()方法是不會自動執行,所以我們必須在畫面轉換時在hide()執行dispose()方法。
總結
以下列出ApplicatonListener和平Screen介面的分別:

- ApplicationListener介面用create()方法,Screen介面用show()方法。
- Screen介面多一個hide()方法,當現時畫面跳到另一個時畫時,hide()方法就會自動執行。
- ApplicationListener介面的dispose()方法會在Application銷毀時自動執行。
- Screen介面的dispose()方法是不會自動執行,所以我們必須在畫面轉換時在hide()執行dispose()方法。