Я отправляю этот вопрос, потому что я не могу найти ясный ответ. :)Google Analytics для нескольких мероприятий Android
Im новое для Android и в настоящее время приложение, которое имеет несколько видов деятельности. Я использую сервисы Google для Google Analytics. Следуя руководству google dev, мне удалось заставить его работать. Но всякий раз, когда я создаю новый Activity (экран), я должен повторять одни и те же коды внутри каждого класса активности.
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());
}
}
Мой 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?
Любые идеи парней? Заранее спасибо.
Тогда как я могу получить его в качестве общего объекта для всех видов деятельности? Должен ли я расширять класс AnalyticsSampleApp? Что-то вроде 'Activity1 расширяет AnalyticsSampleApp' или создает объект класса AnalyticsSampleApp в каждом классе Activity' AnalyticsSampleApp an = new AnalyticsSampleApp() '? Извините, я новичок в Android ... –