Wenn Sie Firebase Analytics einfach basierend auf der Referenz festlegen, ist dies wie folgt. quickstart-android
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//① Definieren Sie eine Firebase Analytics-Instanz in einem Feld, damit sie in der gesamten Klasse verwendet werden kann
private FirebaseAnalytics mFirebaseAnalytics;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//② Legen Sie die Firebase Analytics-Instanz zum Zeitpunkt von onCreate fest
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
TextView helloWorld = (TextView) findViewById(R.id.hello_world);
helloWorld.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.hello_world) {
// ③ 「Hello World!Löst das Ereignisprotokoll aus, wenn auf den Text geklickt wird
Bundle params = new Bundle();
params.putString("param1", "test");
params.putInt("param2", 100);
params.putDouble("param3", 3.14);
mFirebaseAnalytics.logEvent("event1", params);
}
}
}
Wenn Sie den Code wie oben erwähnt gemäß der Referenz schreiben, unterscheiden sich ** der Speicherort der Firebase Analytics-Instanzdefinition **, ** der Speicherort der Instanzeinstellung **, ** der Speicherort des Ereignisprotokolls unter Verwendung dieser Instanz **. .. Dies macht es schwierig, Instanzen von Firebase Analytics in jeder Klasse zu verwalten, und es ist schwierig, Firebase Analytics zu verwenden.
Darüber hinaus wird der Parametereinstellungsteil, der dem Ereignisprotokoll hinzugefügt werden soll, mit zunehmender Anzahl von Parametern redundant, sodass dieser Teil auch einfacher eingestellt werden kann (z. B. mithilfe einer Kettenmethode). Möchte.
Implementieren Sie die FirebaseAnalyticsHelper-Klasse mithilfe des Singleton-Musters wie folgt. Das Singleton-Muster finden Sie unter [Gepostet auf Wikipedia](https://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83] Ich bezog mich auf% B3).
public class FirebaseAnalyticsHelper {
//① Definieren Sie eine Firebase Analytics-Instanz im Feld
private FirebaseAnalytics mFirebaseAnalytics;
//② Richten Sie eine Firebase Analytics-Instanz mit "Singleton-Muster" ein.
private static FirebaseAnalyticsHelper sInstance;
private FirebaseAnalyticsHelper(Context context){
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context.getApplicationContext());
}
public static synchronized FirebaseAnalyticsHelper getInstance(Context context){
if(sInstance == null){
sInstance = new FirebaseAnalyticsHelper(context);
}
return sInstance;
}
//③ Erstellen Sie eine Methode zum Auslösen des Ereignisprotokolls
public void logEvent(@NonNull final String name, Bundle params) {
mFirebaseAnalytics.logEvent(name, params);
}
public void logEvent(@NonNull final String name) {
mFirebaseAnalytics.logEvent(name, null);
}
}
Bei Anwendung auf die oben genannte MainActivity mit dieser FirebaseAnalyticsHelper-Klasse kann der Code für ** FirebaseAnalytics nur in dem Teil geschrieben werden, der das Ereignisprotokoll wie unten gezeigt auslöst. ** ** **
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView helloWorld = (TextView) findViewById(R.id.hello_world);
helloWorld.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.hello_world) {
//「Hello World!Löst das Ereignisprotokoll aus, wenn auf den Text geklickt wird
Bundle params = new Bundle();
params.putString("param1", "test");
params.putInt("param2", 100);
params.putDouble("param3", 3.14);
FirebaseAnalyticsHelper.getInstance(this).logEvent("event1", params);
}
}
}
Unten ist der Beispielcode. hinom77/SimpleFirebaseAnalytics ~ Branch: feature_singleton
Implementieren Sie die FirebaseAnalyticsParams-Klasse mithilfe des Builder-Musters wie folgt. In Bezug auf das Builder-Muster gibt es verschiedene Muster wie im Artikel In Java geschriebenes Builder-Mustermuster, aber hier ** Effektiver Java Builder ** wird genutzt.
public class FirebaseAnalyticsParams {
//(1) Definieren Sie die Parametereinstellungen in "Builder-Muster".
private Bundle mParams;
private FirebaseAnalyticsParams(Builder builder) {
mParams = builder.params;
}
public static class Builder {
private Bundle params = new Bundle();
public Builder param1(String param1) {
params.putString("param1", param1);
return this;
}
public Builder param2(Integer param2) {
params.putInt("param2", param2);
return this;
}
public Builder param3(Double param3) {
params.putDouble("param3", param3);
return this;
}
public FirebaseAnalyticsParams build() {
return new FirebaseAnalyticsParams(this);
}
}
//(2) Geben Sie den Params-Wert als Bundle-Typ zurück
public Bundle getBundleParams() {
return mParams;
}
}
Bei Anwendung auf die oben genannte MainActivity mit dieser FirebaseAnalyticsParams-Klasse kann der Code für den Parametereinstellungsteil so einfach wie eine Zeile sein, unabhängig davon, wie viele Variablen vorhanden sind.
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView helloWorld = (TextView) findViewById(R.id.hello_world);
helloWorld.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view.getId() == R.id.hello_world) {
//「Hello World!Löst das Ereignisprotokoll aus, wenn auf den Text geklickt wird
FirebaseAnalyticsParams params = new FirebaseAnalyticsParams
.Builder().param1("test").param2(100).param3(3.14).build();
FirebaseAnalyticsHelper.getInstance(this).logEvent("event1", params);
}
}
}
Beachten Sie, dass die FirebaseAnalyticsHelper-Klasse als Reaktion auf die oben genannten Punkte ebenfalls teilweise neu geschrieben werden muss.
Unten ist der Beispielcode. hinom77/SimpleFirebaseAnalytics ~ Branch: feature_builder