何時在Android 中安全使用匿名內部類
內部類內存洩漏
在Android 中,當內部類別的壽命超過其外部類別的壽命時,就會發生記憶體洩漏。當內部類別直接或透過另一個物件間接持有對外部類別的強引用時,就會發生這種情況。
使用匿名內部類別的安全情況
使用Activity 中的匿名內部類別在以下情況下通常是安全的:
安全匿名內部類別的範例
您在問題中提供的程式碼範例是安全匿名內部類別的範例:
// This is safe because the anonymous class is a short-lived callback okButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { dialog.dismiss(); } });
使用匿名內部類別的危險情況
在Activity 中使用匿名內部類別在以下情況下可能會很危險:
危險的匿名內部類別範例
以下程式碼範例說明了危險的匿名內部類別:
// This is dangerous because _droidPlayRunnable holds a long-lived reference to _someFieldOfTheActivity _handlerToDelayDroidMove = new Handler(); _handlerToDelayDroidMove.postDelayed(_droidPlayRunnable, 10000); private Runnable _droidPlayRunnable = new Runnable() { public void run() { _someFieldOfTheActivity.performLongCalculation(); } };
了解Activity 生命週期和內部類別
Android Activity具有生命週期,決定它們何時創建、恢復、暫停和銷毀。當 Activity 被銷毀時,其內部狀態就會遺失。這包括對 Activity 中任何內部類別的引用。
防止記憶體洩漏
為了避免匿名內部類別中的記憶體洩漏,重要的是:
以上是什麼時候在 Android 中使用匿名內部類別是安全的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!