Acra не работает должным образом в onCreate() MainActivity?
Для целей тестирования я создаю ошибку в моем методе onCreate() моей MainActivity. Акра признает это и показывает тост.
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
Но после этого все происходит снова и снова, бесконечно... Снова появляется тост, я снова вижу стэкстрейс...
Когда я создаю ошибку в, скажем, onOptionsItemSelected(), все работает как положено. Тост появляется. Мое приложение закрывается. Диалог появляется. Это то, что я хочу...
Но почему это не работает в onCreate() должным образом?
Библиотека Acra (версия 4.4.0) находится в папке libs.
Основная деятельность:
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);
}
}
Manifest:
<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);
}
Runnable:
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
// doing stuff here...
mHandler.postDelayed(mUpdateTimeTask, 1000);
}
};
1 ответ
Решение
Так что это поведение, похоже, ошибка Acra, которая будет исправлена в версии 4.5 -> https://github.com/ACRA/acra/issues/42