2013-02-23 3 views
3

테스트 목적으로 내 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); 
    } 
}; 
+0

MainActivity의 onCreate()를 게시하면 활동이 다시 시작되는 것처럼 보입니다. –

+0

이전에 오류가 발생했을 때 내 앱이 Runnable을 시작하지 않을 것이라고 생각 했습니까? 어떻게 방지 할 수 있습니까? – Oliver

+0

@Oliver : 대화 상자를 성공적으로 가져올 수 있습니까? 제 경우에는 ACRA가 대화 상자를 불러 오지 못합니다. – VendettaDroid

답변

0

이 동작은 버전 4.5에서 수정 된 Acra 버그 인 것 같습니다. ->https://github.com/ACRA/acra/issues/42

+0

대화 상자를 성공적으로 불러올 수 있습니까? 제 경우에는 ACRA가 대화 상자를 불러 오지 못합니다. 4.5 ACRA를 사용하고 있습니다. – VendettaDroid