Im new to Android and currently making an app which has multiple activities. I use google play services for google analytic. By following google dev guide, I managed to get it working. But whenever I create a new Activity(screen) I have to repeat the same codes inside each activity class.
Ex:-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());
}
}
My global_tracker.xml is
<!-- 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>
This setup works just fine. My question is "Is this the best way to do this?". Is it possible to use another way to minimize the codes in each Activity class? Because everytime I have to repeat the same code. Is it possible to create a common class to hold those common set of codes and use it as an object inside each Activity class?
Any ideas guys? Thank you in advance.
Aucun commentaire:
Enregistrer un commentaire