2016-05-26 8 views
0

Ich mochte die Art, wie der Logger in Android-Proben verwendet wird und möchte das gleiche in meiner App zu implementieren. Aber ich finde es schwierig, den Kontrollfluss zu verstehen. Kann mir jemand helfen, es zu verstehen?Kontrollfluss von Logger in Android-Proben verwendet

Ich verweise das RecyclerView-Beispiel.

Download Link: https://developer.android.com/downloads/samples/RecyclerView.zip

Screenshot der Struktur Projekt:

The screenshot of project structure

Edit1: Ich bin nicht das bekommen, was hier eigentlich passiert, wo es Für Rohrleitungen sagt: Der nächste Knoten zu empfangen Protokolldaten .... Und wie die Nachrichten sowohl auf der Konsole als auch auf der Benutzeroberfläche gedruckt werden.

-Code Abschnitt von LogWrapper Klasse:

// For piping: The next node to receive Log data after this one has done its work. 
private LogNode mNext; 

/** 
* Returns the next LogNode in the linked list. 
*/ 
public LogNode getNext() { 
    return mNext; 
} 

/** 
* Sets the LogNode data will be sent to.. 
*/ 
public void setNext(LogNode node) { 
    mNext = node; 
} 

Ich möchte die Beziehung zwischen verschiedenen Klassen unter Logger Paket wissen, und wie die Steuerflüsse zwischen ihnen, wenn wir rufen Log.d() von Aktivität, ein Fragment oder Adapter .

+0

Warum ist es besser als Standard-Logger? Hast du [Timber] (https://github.com/JakeWharton/timber) versucht? –

+0

@MaximG: Nein, ich wusste nichts davon. Ich werde es mir ansehen. In diesem Beispiel drucken sie mit diesem Logger die Benutzerschnittstelle (TextViews). Ich denke daran, das gleiche Konzept zu verwenden und die Logs in eine Datei umzuleiten. –

Antwort

0

Rohrleitungen über Link-Liste implementiert.

In MainActivity.initializeLogging() füllen Sie diese Liste.

LogWrapper -> MessageOnlyLogFilter -> LogView

All diese Klassen implementierte Schnittstelle LogNode (kann in Druckbuchstaben) und Liste gleichermaßen Verhalten (Knoten und zum nächsten).

LogWrapper sendet alle Nachrichten an den Standard-Logger, als wenn ein Knoten vorhanden ist, wird es eine Nachricht verschicken (in unserem Fall MessageOnlyLogFilter).

MessageOnlyLogFilter streift alles außer der Nachricht und schiebt zum nächsten Knoten (LogView).

LogView erweitert TextView und druckt Protokolle auf einem Bildschirm.

+0

Ich möchte wissen, die Beziehung zwischen den verschiedenen Klassen unter Logger-Paket und wie die Kontrolle zwischen ihnen, wenn wir Log.d() von der Aktivität, Fragment oder Adapter aufrufen. Wie es auf der Konsole sowie auf der Benutzeroberfläche gedruckt wird. Ich werde meine Frage mit dem, was mich verwirrt, aktualisieren. –

+0

Frage aktualisiert. –

+0

Also antworte =) –