2016-08-22 17 views
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类,如何注册这两个类?

+0

添加代码,你想要做的一切都可以发生在单个类的东西。 –

+0

将您的谷歌分析代码写入扩展MultiDexApplication类的AppApplication类中,因为它直接扩展应用程序类,并在那里使用多级继承。 –

+0

如果我同时使用这两个类并将名称“MyApplication”添加到清单中,是否会有任何问题? @JayShah – Ushasi

回答

1

您可以在现有的应用程序类添加以下方法来支持Multidex文件 -

protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(this); 
} 
+0

扩展MultiDexApplication的类有一些额外的代码,所以我需要使用这两个类。 @Passiondroid – Ushasi

相关问题