java - Acra 在 MainActivity 的 onCreate() 中无法正常工作?

标签 java android acra

出于测试目的,我在 MainActivity 的 onCreate() 方法中创建了一个错误。 Acra 识别并显示 Toast。

02-23 19:05:35.075: E/ACRA(599): ACRA caught a RuntimeException exception for .... Building report.
02-23 19:05:35.080: I/ACRA(599): READ_LOGS granted! ACRA can include LogCat and DropBox data.
02-23 19:05:35.080: D/ACRA(599): Writing crash report file 1361642735000.stacktrace.
02-23 19:05:35.125: D/ACRA(599): Waiting for Toast + worker...
02-23 19:05:35.125: D/dalvikvm(599): GC_CONCURRENT freed 278K, 18% free 2512K/3032K, paused 2ms+4ms, total 29ms
02-23 19:05:38.160: D/ACRA(599): About to create DIALOG from #handleException
02-23 19:05:38.160: D/ACRA(599): Creating Dialog for 1361642735000.stacktrace
02-23 19:05:38.170: D/ACRA(599): Wait for Toast + worker ended. Kill Application ? true
02-23 19:05:38.190: E/ACRA(599): ... fatal error : Unable to start activity ComponentInfo{.../....MainActivity}: java.lang.ArithmeticException: divide by zero

但在那之后,一切都在无休止地一次又一次地发生...... Toast 再次出现,我又看到了 stackstrce...

当我创建一个错误时,让我们说 onOptionsItemSelected(),一切都按预期工作。 toast 出现。我的应用程序关闭。对话框出现。这就是我想要的...

但是为什么这在 onCreate() 中不能正常工作?

Acra 库(4.4.0 版)位于 libs 文件夹中。

主要 Activity :

import org.acra.ACRA;
import org.acra.annotation.*;
import org.acra.ReportingInteractionMode;

import android.app.Application;

@ReportsCrashes(formKey = "",
        mailTo = "my_email_address", 
        mode = ReportingInteractionMode.DIALOG,
        resToastText = R.string.crash_toast_text,
        resDialogText = R.string.crash_dialog_text,
        resDialogIcon = android.R.drawable.ic_dialog_info,
        resDialogTitle = R.string.crash_dialog_title,
        resDialogCommentPrompt = R.string.crash_dialog_comment_prompt,
        resDialogOkToast = R.string.crash_dialog_ok_toast
        )

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ACRA.init(this);
    }

}

list :

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock.Light.DarkActionBar"
        android:allowBackup="true"
        android:name="MyApplication" >

        <activity android:name="org.acra.CrashReportDialog"
            android:theme="@android:style/Theme.Dialog"
            android:launchMode="singleInstance"
            android:excludeFromRecents="true"
            android:finishOnTaskLaunch="true" />

我的 MainActivity 看起来像这样:

@Override
protected void onCreate(Bundle savedInstanceState) {
    int i = 1/0; // raise an error for acra

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mHandler.postDelayed(mUpdateTimeTask, 0);
}

可运行的:

private Runnable mUpdateTimeTask = new Runnable() {
    public void run() {

        // doing stuff here...

        mHandler.postDelayed(mUpdateTimeTask, 1000);
    }
};

最佳答案

所以这种行为似乎是一个 Acra 错误,将在 4.5 版中修复 -> https://github.com/ACRA/acra/issues/42

关于java - Acra 在 MainActivity 的 onCreate() 中无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15044051/

相关文章:

android - ACRA 自定义日志报告器

java - Firebase 获取条目的当前值

java - 模拟 flickr api 以实现更好的单元测试

java - 一旦两个值相除就会出现异常

java - JProgressBar 更新

java - 如何禁用 Android Camera2 API 中的所有自动功能

java - 以编程方式进行android TextView布局

android - 自定义日志报告 - ACRA Android

java - android list 中的多个应用程序

java - Spring LDA : Problem with contextSource Bean