在活動中安全地使用內部類:
當內部類的生命週期超出其容器類的生命週期時,內部類可能會造成記憶體洩漏風險(活動)在安卓中。當外部類別被銷毀或重新建立後,外部實例引用內部實例時,就會發生這種情況。
範例 1(安全):
在此範例中,匿名內部類別是在方法的範圍內定義的,並且不維護對 Activity 的長期引用。因此,它是洩漏安全的:
final Dialog dialog = new Dialog(this); // ... dialog.show();
範例 2(危險):
此範例對透過 Handler 執行的 Runnable 使用匿名內部類別。由於Runnable 引用了Activity 的某個字段,因此它可以比Activity 活得更久,並維護對它的引用,從而導致內存洩漏:
_handlerToDelayDroidMove = new Handler(); _handlerToDelayDroidMove.postDelayed(_droidPlayRunnable, 10000); // ... private Runnable _droidPlayRunnable = new Runnable() { public void run() { _someFieldOfTheActivity.performLongCalculation(); } };
何時內部類比外部類更長壽?
內部類別在以下情況下可以比外部類別更長壽:
Activity 和 View洩漏:
Runnable 洩漏:
最佳實務:
以上是在Android Activity中使用內部類別時如何防止記憶體洩漏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!