Если у меня есть вспомогательный класс, как в следующем:Пропустит контекст для вспомогательного класса при утечке активности андроида?
public class TestHelper {
private Context context;
public TestHelper(Context context);
this.context = context;
}
public doSomethingWithContext(){
//some code
}
и моя активность выглядит следующим образом:
public class MainActivity extends AppCompatActivity{
private TestHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
helper = new TestHelper(this);
}
}
Будет ли контекст будет утечка, как это, или я должен установить помощник обнулить в методе onDestroy (будет ли это работать даже для GC)?
Также мне нужен помощник в нескольких методах (onCreate, onPause и т. Д.), Поэтому создание Помощника внутри всех методов не похоже на хорошее решение.
Этот excact код не вызовет утечку активности ... – Selvin
Да, если ваш контекст сохранения в классе помощника, он будет просачиваться свой контекст. Он не будет собирать мусор. Никогда не делайте разыгрывания на onDestroy, потому что он не будет гарантированно вызван. Вместо этого вы можете установить значение null на onStop. – HendraWD
@HendraWD какая утечка ... этот код (код из вопроса) не вызовет утечки ... контекст в вспомогательном классе не используется, а экземпляр вспомогательного класса - это поле в самой деятельности ... поэтому он «умрет» «с активностью ... **, но если он будет использовать контекст в вспомогательном классе, то установка вспомогательного экземпляра на null может оказаться недостаточной, чтобы избежать утечек активности ** – Selvin