2016-06-18 10 views
2

"Platzieren Sie keine Android-Kontextklassen in statischen Feldern; dies ist ein Speicherleck (und unterbricht auch Instant Run) "wird angezeigt, während ein Android-Steuerelement statisch gemacht wird. Gibt es eine bessere Möglichkeit, auf ein Android-Steuerelement (wie TextView) von einer anderen Klasse zuzugreifen als ein Objekt der Elternklasse zu erstellen oder es (TextView) statisch zu machen?"Platzieren Sie keine Android-Kontextklassen in statischen Feldern; dies ist ein Speicherleck (und unterbricht auch Instant Run)"

+0

Sie zeigen besser, was Sie implementiert haben, um eine genaue Lösung zu finden. Das sagte, @Alexander Kulyakhtin schlug eine gute Vorgehensweise vor –

Antwort

0

Ich bin nicht sicher, ob das, was Sie tun, gültig ist, aber Sie können einen Event-Bus, wie Otto verwenden, um Ereignisse von Objekten zu Objekten (wie etwa von einem Dienst zu einer Aktivität)

zu senden und Sie können Ihr eigenes Application-abgeleitetes Objekt haben, dies wird ein Singleton sein, der die ganze Zeit existiert, während Ihr Programm lebt, so dass Sie dort statische Felder haben können.

0

Wie wir wissen, die Application oder MultiDexApplication Klasse immer aktiv bleibt im Gedächtnis, so brauchen wir nicht unsere Objekte oder Variablen wie statischen, sondern nur erklären, sie als normal (nicht-statische) zu machen, und Aufruf durch Erstellen eines Objekts dieser Anwendungsklasse, d. anstatt sie direkt als statisches Aufruf ..

Wrong Way:

AppClass.myObj = 1; 
var = AppClass.myObj; 

Right Way:

AppClass appClass = (AppClass)getApplicationContext(); 
appClass.myObj=1; 

und

var= appClass.myObj;