android crashlytics检测应用程序突然被破坏并消失了

时间:2018-10-16 10:49:13

标签: java android crashlytics

在我的应用程序中,我有3个活动,

1-Splash,2-MainActivity,3-Audio Activity。

在“音频活动”中,我正在使用ExoPlayer循环播放20个音频文件(完成最后一个文件后,第一个文件自动启动)。

应用程序可以正常运行数小时。 有时,在播放音频的过程中(后台活动),该应用程序停止播放而没有任何错误消息,并且消失了,我需要再次重新打开该应用程序。 (这发生在两个不同的设备上)。

在Manifest的一部分下

    <application
    android:largeHeap="true"
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyMaterialTheme"

    >
    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <meta-data android:name="android.max_aspect" android:value="2.1"/>
    <activity android:name="PKG.SplashActivity"
        android:theme="@style/MyDialogTheme"
        android:configChanges="orientation|screenSize|keyboard">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
    <activity
        android:name="com.facebook.ads.AudienceNetworkActivity"
        android:hardwareAccelerated="true" />
    <activity
        android:launchMode="singleTask"
        android:name="PKG.PlayerActivity"
        android:configChanges="orientation|screenSize|keyboard"
        android:label="@string/app_name"
        android:theme="@style/MyDialogTheme">
    </activity>
    <activity
        android:name="PKG.MainActivity"
        android:label="@string/app_name"
        android:configChanges="orientation|screenSize|keyboard">
    </activity>

已将Crashlytics代码添加到“主要”活动(不是“飞溅”活动):

        final Fabric fabric = new Fabric.Builder(this)
            .kits(new Crashlytics())
            .debuggable(true)  // Enables Crashlytics debugger
            .build();
    Fabric.with(fabric);

我的问题:

  • 如何使用Crashlytics捕获此类应用程序停止?
  • 还有其他方法可以捕获此崩溃吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

在Application.class中

Thread.setDefaultUncaughtExceptionHandler(new CrashExceptionHandler(context));

public class CrashExceptionHandler implements Thread.UncaughtExceptionHandler {

Context mContent;

private CrashExceptionHandler() {

}

public CrashExceptionHandler(Context context) {
    this.mContent = context;
}

@Override
public void uncaughtException(Thread t, Throwable e) {
    String errorStr= "";
    for (StackTraceElement obj:e.getStackTrace()) {
        errorStr +=" | "+obj.getFileName()+":"+obj.getClassName()+":"+obj.getMethodName()+":"+obj.getLineNumber();
    }
    // save into file or in log....
}

}

答案 1 :(得分:0)

步骤1: 您必须像这样在gradle中添加crashlytics:Implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar')

第2步:调用Fabric.with(this,new Crashlytics());在您的第一次活动中

请注意,您必须在Fabrics中创建帐户。另外,您已将Fabric插件添加到android studio。 这样崩溃报告将发送到您的注册电子邮件中