1
// Google Analytics class
public class MyApplication extends AppApplication {
public static final String TAG = MyApplication.class
.getSimpleName();
private static MyApplication mInstance;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
AnalyticsTrackers.initialize(this);
AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
}
public static synchronized MyApplication getInstance() {
return mInstance;
}
public synchronized Tracker getGoogleAnalyticsTracker() {
AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();
return analyticsTrackers.get(AnalyticsTrackers.Target.APP);
}
/***
* Tracking screen view
*
* @param screenName screen name to be displayed on GA dashboard
*/
public void trackScreenView(String screenName) {
Tracker t = getGoogleAnalyticsTracker();
// Set screen name.
t.setScreenName(screenName);
// Send a screen view.
t.send(new HitBuilders.ScreenViewBuilder().build());
GoogleAnalytics.getInstance(this).dispatchLocalHits();
}
public void trackException(Exception e) {
if (e != null) {
Tracker t = getGoogleAnalyticsTracker();
t.send(new HitBuilders.ExceptionBuilder()
.setDescription(
new StandardExceptionParser(this, null)
.getDescription(Thread.currentThread().getName(), e))
.setFatal(false)
.build()
);
}
}
public void trackEvent(String category, String action, String label) {
Tracker t = getGoogleAnalyticsTracker();
// Build and send an Event.
t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());
}
}
// my application class which extends MultiDexApplication
public class AppApplication extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
\t @Override
\t public void onCreate() {
\t \t super.onCreate();
\t \t
\t \t
\t \t
\t }
\t public static void checkrating(final Activity activity){
\t \t new Handler().postDelayed(new Runnable() {
\t \t \t \t @Override
\t \t \t \t public void run() {
\t \t \t \t \t checkratingdialog(activity);
\t \t \t \t }
\t \t \t }, 10000 /*300000*/);
\t }
\t
\t public static void checkratingdialog(Activity activity) {
\t \t
\t \t try {
\t \t \t if(activity==null){
\t \t \t \t Log.v("activity", "null");
\t \t \t }
\t \t \t Calendar cal = Calendar.getInstance();
\t \t SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
\t \t String currentdate = sdf.format(cal.getTime());
\t \t Log.v("Current date", currentdate);
\t \t
\t \t \t SharedPreferences sharedPreferences = activity.getSharedPreferences(
\t \t \t \t \t "MY_SHARED_PREF", MODE_PRIVATE);
\t \t \t String shareddate = sharedPreferences.getString("PREVIOUS_RATING_DATE", "");
\t \t \t
\t \t \t Log.v("Shared Date", shareddate + "");
if(shareddate.equals("")){
\t \t \t \t Log.v("Shared Date", "Shared blank");
\t \t \t \t showWaitingnooftickitsDialog(activity);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("PREVIOUS_RATING_DATE", currentdate);
editor.commit();
\t \t \t }else{
\t \t \t \t
\t \t \t \t int dayes = get_count_of_days(currentdate , shareddate);
\t \t \t \t Log.v("dayes", dayes+"");
\t \t \t \t /*int dayescheck = get_count_of_days(currentdate , "20/05/2016");
\t \t \t \t Log.v("dayescheck", dayescheck + "");*/
\t \t \t \t if(dayes>=30){
\t \t \t \t \t showWaitingnooftickitsDialog(activity);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("PREVIOUS_RATING_DATE", currentdate);
editor.commit();
\t \t \t \t }
\t \t \t }
\t \t \t
\t \t
\t \t
\t \t } catch (Exception e) {
\t \t \t // TODO: handle exception
\t \t \t e.printStackTrace();
\t \t }
\t \t
\t }
\t static Dialog ratingdialog;
}
我已經延伸MultiDexApplication延伸應用的應用類別及其他。我想在清單的應用程序標籤中註冊兩個類名。我搜索了它,發現我們可以使用here所示的多級繼承。但是,如果一個是純粹的Application類而另一個是MultiDexApplication類,如何註冊這兩個類?
添加代碼,你想要做的一切都可以發生在單個類的東西。 –
將您的谷歌分析代碼寫入擴展MultiDexApplication類的AppApplication類中,因爲它直接擴展應用程序類,並在那裏使用多級繼承。 –
如果我同時使用這兩個類並將名稱「MyApplication」添加到清單中,是否會有任何問題? @JayShah – Ushasi