2016-08-22 1 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

напишите свой код аналитики Google в классе AppApplication, который расширяет класс MultiDexApplication, потому что он напрямую расширяет класс приложений, и там используется многоуровневое наследование. –

+0

Будет ли какая-либо проблема, если я использую оба этих класса как есть и добавить имя «MyApplication» в манифест? @JayShah – Ushasi

ответ

1

Вы можете добавить ниже метод в существующем классе приложения для поддержки Multidex файлов -

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

класс, который расширяет MultiDexApplication, имеет дополнительный код, поэтому мне нужно использовать оба класса. @Passiondroid – Ushasi

Смежные вопросы