1

明確な答えが見つからなかったので、この質問を投稿します。:)

私はAndroidが初めてで、現在複数のアクティビティを持つアプリを作成しています。Google アナリティクスに Google Play サービスを使用しています。Google開発者ガイドに従うことで、なんとか機能させることができました。しかし、新しいアクティビティ (画面) を作成するたびに、各アクティビティ クラス内で同じコードを繰り返す必要があります。

例:-Activity1.java

public class Activity1 extends Activity {

HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_activity1);
    setAnalytics();
}

public enum TrackerName {
   APP_TRACKER, // Tracker used only in this app.
   GLOBAL_TRACKER, // Tracker used by all the apps from a company.
   ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
}

synchronized Tracker getTracker(TrackerName trackerId) {
   if (!mTrackers.containsKey(trackerId)) {
      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      Tracker tracker = analytics.newTracker(R.xml.global_tracker);
      mTrackers.put(trackerId, tracker);
   }
   return mTrackers.get(trackerId);
}

private void setAnalytics(){
    // Get tracker.
    Tracker t = getTracker(TrackerName.APP_TRACKER);
    // Set screen name.
    //t.setScreenName("Activity 1");
    // Send a screen view.
    t.send(new HitBuilders.AppViewBuilder().build());
}
}

私のglobal_tracker.xmlは

<!-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>

<!-- The screen names that will appear in reports -->
<screenName name="com.test.activity1">Activity1</screenName>
<screenName name="com.test.activity2">Activity2</screenName>

<!--  The following value should be replaced with correct property id. -->
<string name="ga_trackingId">UA-XXXXXXXX-1</string>

このセットアップは問題なく動作します。私の質問は、「これはこれを行うための最良の方法ですか?」です。各 Activity クラスのコードを最小化する別の方法を使用することは可能ですか? 毎回同じコードを繰り返さなければならないからです。これらの共通のコード セットを保持する共通のクラスを作成し、それを各 Activity クラス内のオブジェクトとして使用することは可能ですか?

アイデアはありますか?前もって感謝します。

4

1 に答える 1