оригинал здесь ссылка=связь=reference Возьмем следующий код:
1 2 3 4 5 6 7 8 9 |
public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override public void handleMessage(Message msg) { // ... } }; } |
Хотя это и может показаться неочевидным, такой код вызывает существенную утечку памяти. Android Lint выдает следующее предупреждение: In Android, Handler classes should be static or leaks might occur. Но где именно происходит утечка? Давайте попробуем определить проблему исходя из имеющихся фактов: Когда впервые стартует андроид-приложение, фреймворк создает объект ..