این سند نمای کلی سطح بالایی از اندازهگیری خرابی و استثنا را با استفاده از Google Analytics SDK برای Android نسخه 3 ارائه میکند.
بررسی اجمالی
اندازهگیری خرابی و استثنا به شما امکان میدهد تعداد و نوع خرابیها و موارد استثنایی را که در برنامه شما رخ میدهد، اندازهگیری کنید. یک استثنا دارای این فیلدها است:
نام زمینه | میدان ردیاب | تایپ کنید | ضروری | شرح |
---|---|---|---|---|
شرح |
|
| خیر | شرح استثنا (حداکثر 100 کاراکتر). null می پذیرد. |
کشنده است |
| boolean | آره | نشان می دهد که آیا استثنا کشنده بوده است یا خیر. true نشان دهنده کشنده است |
دادههای خرابی و استثنا عمدتاً در گزارش خرابی و استثناء موجود است.
گرفتار استثنا
استثناهای کشف شده خطاهایی در برنامه شما هستند که کدهای مدیریت استثنا را برای آنها تعریف کرده اید، مانند وقفه زمانی اتصال شبکه در طول درخواست داده.
با تنظیم مقادیر فیلد استثنا در ردیاب و ارسال ضربه، مانند این مثال، یک استثنای گرفته شده را اندازه گیری کنید:
/* * An app tries to load a list of high scores from the cloud. If the request * times out, an exception is sent to Google Analytics */ try { // Request some scores from the network. ArrayListhighScores = getHighScoresFromCloud(); } catch (IOException e) { // May return null if EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(this); // StandardExceptionParser is provided to help get meaningful Exception descriptions. easyTracker.send(MapBuilder .createException(new StandardExceptionParser(this, null) // Context and optional collection of package names // to be used in reporting the exception. .getDescription(Thread.currentThread().getName(), // The name of the thread on which the exception occurred. e), // The exception. false) // False indicates a nonfatal exception .build() ); ... // Display alert to user that high scores are currently unavailable. }
اندازهگیری استثنای کشف نشده
استثناهای کشف نشده مواردی را نشان میدهند که برنامه شما در زمان اجرا با شرایط غیرمنتظرهای مواجه میشود و اغلب کشنده است و باعث از کار افتادن برنامه میشود. استثناهای کشف نشده را می توان با استفاده از EasyTracker یا کلاس ExceptionReporter
به طور خودکار به Google Analytics ارسال کرد.
با استفاده از EasyTracker
برای ارسال خودکار همه استثناهای کشف نشده در برنامه خود با استفاده از EasyTracker، این خط را به فایل analytics.xml
خود اضافه کنید:
<bool name="ga_reportUncaughtExceptions">true</bool>
پس از ارسال یک استثنا با استفاده از اندازهگیری خودکار استثنا، EasyTracker استثنا را به کنترلکننده استثنا پیشفرض Thread
منتقل میکند.
با استفاده از یک پیاده سازی پیشرفته
اگر از یک پیادهسازی پیشرفته استفاده میکنید و از EasyTracker استفاده نمیکنید، از کلاس ExceptionReporter
برای پیادهسازی اندازهگیری خودکار استثنا غیرقابل استفاده استفاده کنید.
ExceptionReporter
میتواند بهعنوان کنترلکننده استثنای غیرقابل پیشفرض برای یک رشته خاص یا همه رشتههای موجود در برنامه شما باشد. پس از ارسال یک استثنا به Google Analytics، کلاس ExceptionReporter
میتواند به صورت اختیاری استثنا را به یک کنترلکننده استثنا که شما ارائه میدهید منتقل کند.
کد زیر یک شی ExceptionReporter
جدید ایجاد میکند و آن را به عنوان کنترلکننده استثنای پیشفرض جدید تعیین میکند. در نتیجه، هر استثنای کشف نشده به Google Analytics ارسال میشود و سپس به کنترلکننده استثنای قبلی منتقل میشود. برای اکثر برنامهها، کنترلکننده پیشفرض، استثنا را در گزارش ثبت میکند و برنامه را خاتمه میدهد.
UncaughtExceptionHandler myHandler = new ExceptionReporter( GoogleAnalytics.getInstance(this).getDefaultTracker(), // Tracker, may return null if not yet initialized. GAServiceManager.getInstance(), // GAServiceManager singleton. Thread.getDefaultUncaughtExceptionHandler()); // Current default uncaught exception handler. // Make myHandler the new default uncaught exception handler. Thread.setDefaultUncaughtExceptionHandler(myHandler);
هنگام استفاده از اندازه گیری استثنای خودکار، موارد زیر را در نظر داشته باشید:
- همه استثناهای ارسال شده با استفاده از اندازه گیری استثنای خودکار به عنوان مرگبار در Google Analytics گزارش می شوند.
- به طور پیش فرض، فیلد توضیحات به طور خودکار با استفاده از نوع استثنا، نام کلاس، نام روش و نام رشته تنظیم می شود.
تجزیه توضیحات استثنا
SDK یک StandardExceptionParser
برای سادهسازی فرآیند دریافت و ارسال توضیحات استثنا به Google Analytics ارائه میکند:
// Using StandardExceptionParser to get an Exception description. try { // Request some scores from the network. ArrayListhighScores = getHighScoresFromCloud(); } catch (IOException e) { // May return null if EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(this); easyTracker.send(MapBuilder .createException(new StandardExceptionParser(this, null) // Context and optional collection of package names // to be used in reporting the exception. .getDescription(Thread.currentThread().getName(), // The name of the thread on which the exception occurred. e), // The exception. false) // False indicates a fatal exception .build() ); ... // Display alert to user that high scores are currently unavailable. }
شما همچنین می توانید تجزیه کننده خود را با پیاده سازی رابط ExceptionParser
و فراخوانی متد setDescription
آن هنگام ارسال یک استثنا به Google Analytics پیاده سازی کنید.