GoogleAnalytics.getInstance (dies) antwortet nicht

Ich habe eine Android-Anwendung und habe Google Analytics Tracker hinzugefügt und es funktioniert (ich kann die Ansichten im Analytics-Bedienfeld sehen).

Das Problem ist, dass die Anwendung irgendwann zu laden beginnt und dann hängen bleibt und nicht mehr reagiert. Ich habe versucht, es zu debuggen und fand heraus, dass, wenn es um die Zeile geht

  GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

sometime gibt es keine Antwort.

Warum ist das passiert und wie kann ich das beheben?

BEARBEITEN

Ich habe optional analytics_global_config hinzugefügt und es passiert immer noch

<meta-data
     android:name="com.google.android.gms.analytics.globalConfigResource"
     android:resource="@xml/analytics_global_config" />

analytics_global_config.xml

<?xml version="1.0" encoding="utf-8"?>
 <resources>
     <string name="ga_appName">HebConvertor</string>
     <string name="ga_appVersion">1.0</string>
     <string name="ga_logLevel">verbose</string>
     <integer name="ga_dispatchPeriod">1000</integer>
     <bool name="ga_dryRun">false</bool>
 </resources>

MyApplication:

import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import android.app.Application;

public class MyApplication extends Application  {

      // The following line should be changed to include the correct property id.
      private static final String PROPERTY_ID = "XX-XXXXXXXX-X";

      public enum TrackerName {
        APP_TRACKER, // Tracker used only in this app.
        GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
        ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
      }

      HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

      public MyApplication() {    
        super();
      }

      synchronized Tracker getTracker(TrackerName trackerId) {
            if (!mTrackers.containsKey(trackerId)) {

              GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
              Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml.app_tracker)
                      : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(PROPERTY_ID)
                      : analytics.newTracker(R.xml.app_tracker);
              mTrackers.put(trackerId, t);
            }
            return mTrackers.get(trackerId);
      }
}

app_tracker.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes">
    <!-- tools:ignore="TypographyDashes" -->
    <!-- The apps Analytics Tracking Id -->
    <string name="ga_trackingId">XX-XXXXXXXX-X</string>

    <!-- Percentage of events to include in reports -->
    <string name="ga_sampleFrequency">100.0</string>

    <!-- Enable automatic Activity measurement -->
    <bool name="ga_autoActivityTracking">true</bool>

    <!-- catch and report uncaught exceptions from the app -->
    <bool name="ga_reportUncaughtExceptions">true</bool>

    <!-- How long a session exists before giving up -->
    <integer name="ga_sessionTimeout">-1</integer>

    <!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to
    substitute for the full length canonical Activity name in screen view hit. In order to
    specify an alternate screen name use an <screenName> element, with the name attribute
    specifying the canonical name, and the value the alias to use instead. -->
    <screenName name="com.example.myapplication.MainActivity">MainActivity</screenName>

</resources>

Hauptaktivität

    public class MainActivity extends ActionBarActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            if (savedInstanceState == null) {
                getSupportFragmentManager().beginTransaction()
                        .add(R.id.container, new PlaceholderFragment()).commit();
            }
            getOverflowMenu();
        }

        @Override
        public void onStart() {
            super.onStart();
            //Get an Analytics tracker to report app starts & uncaught exceptions etc.
            GoogleAnalytics.getInstance(this).reportActivityStart(this);
        }

        @Override
        public void onStop() {
            super.onStop();
            //Stop the analytics tracking
            GoogleAnalytics.getInstance(this).reportActivityStop(this);
        }

        public static class PlaceholderFragment extends Fragment {

            public PlaceholderFragment() {
            }

            protected  InterstitialAd interstitial;

            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
               View rootView = inflater.inflate(R.layout.fragment_main, container, false);

               // Get tracker.
               Tracker t = ((MyApplication)getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER);
               // Set screen name.
               t.setScreenName("MainActivity");

            ...
            }

        }
    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage