ho questa classe interna non statica che provoca perdite di memoria, perché contiene un implicito riferimento alla classe contenitrice:Soluzione per accedere metodo membro static da una classe interna statica
private class CalendarScheduleUpdatedEventListener extends ScheduleUpdatedEventListener.Stub {
@Override
public void onScheduleUpdatedEvent() throws RemoteException {
updateCalendar();
}
}
Per fermare la fuoriuscita, ho bisogno di fare è statica:
private static class CalendarScheduleUpdatedEventListener extends ScheduleUpdatedEventListener.Stub {
@Override
public void onScheduleUpdatedEvent() throws RemoteException {
updateCalendar();-> Compiler error - trying to access a non-static...
}
}
e 'impossibile fare updateCalendar()
statica perché in esso accede altre variabili non statici e diventa un pasticcio. Cosa faccio?
possiedi il superclasse? – Terje
Non capisco perché debba essere statico. Se si desidera chiamare un metodo della classe di inclusione, è comunque necessario tale riferimento. Non vedo davvero la perdita di memoria lì. –
Cosa intendi con _che causa perdite di memoria_? Quando l'istanza della classe interna è GC, l'istanza esterna sarà troppo (se non c'è altro riferimento). E quando l'istanza interiore rimane nell'heap, deve rimanere anche quella esterna (perché comunque stai chiamando il metodo esterno). – Codebender