"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)"
Antwort
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.
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;
Sie zeigen besser, was Sie implementiert haben, um eine genaue Lösung zu finden. Das sagte, @Alexander Kulyakhtin schlug eine gute Vorgehensweise vor –