테스트 목적으로 내 MainActivity의 onCreate() 메서드에서 오류가 발생합니다. Acra가이를 인식하고 토스트를 표시합니다.Acra가 MainActivity의 onCreate()에서 제대로 작동하지 않습니까?
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
그러나 모든 것이 다시하고 다시 끝없이 발생 후 ... 토스트가 다시 나타납니다, 나는 다시 stackstrce를 참조 ...
나는(), onOptionsItemSelected 말할 수있는 오류를 생성 할 때, 모든 것이 예상대로 작동합니다. 토스트가 나타납니다. 내 앱이 닫힙니다. 대화 상자가 나타납니다. 그게 내가 원하는 걸 ...
하지만 왜 이것은 onCreate()에서 제대로 작동하지 않습니까?
Acra 라이브러리 (버전 4.4.0)는 libs 폴더에 있습니다.
MainActivity :
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);
}
}
매니페스트 :
내 MainActivity는 다음과 같습니다<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" />
:
@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);
}
};
MainActivity의 onCreate()를 게시하면 활동이 다시 시작되는 것처럼 보입니다. –
이전에 오류가 발생했을 때 내 앱이 Runnable을 시작하지 않을 것이라고 생각 했습니까? 어떻게 방지 할 수 있습니까? – Oliver
@Oliver : 대화 상자를 성공적으로 가져올 수 있습니까? 제 경우에는 ACRA가 대화 상자를 불러 오지 못합니다. – VendettaDroid