我已经编写了一些Android应用程序,在进行一些测试时崩溃了。
但是我不知道崩溃的原因..所以我需要保存崩溃的原因,以便稍后我可以看到...因为我不会在应用程序运行时将它连接到PC,我需要一些建议保存崩溃的原因..?
答案 0 :(得分:1)
只需按以下步骤操作:
try{
//your code which throws exception
}
catch(Exception e){
e.printStackTrace(); //optional
//save your exception in a text file on sd-card
}
稍后您可以阅读文本文件以了解例外
答案 1 :(得分:1)
到目前为止,我遇到的最佳方法是添加Internet权限,并使用ACRA。 ACRA允许您将报告发送到Google Docs电子表格,并可用于测试和制作。
除ACRA外,您有两种选择:
try catch
块包围可能引发错误的每一段代码并将数据保存在某处。答案 2 :(得分:0)
对于有限的细节感到抱歉,但是android没有记录选项吗?
http://developer.android.com/reference/android/util/Log.html
我没有试过这个,可能会选择尝试,捕捉答案,但这只是另一种选择。
答案 3 :(得分:0)
你可以试试catch块:
try {
//the code lies here
} catch(Exception e) {
//here you can save the e.toString() to a FileOutputStream and then save the file
}
答案 4 :(得分:0)
您需要使用Application Class并设置“setDefaultUncaughtExceptionHandler”
public class YourApplication extends Application {
private Thread.UncaughtExceptionHandler defaultUEH;
// handler listener
private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// here I do logging of exception to a db
PendingIntent myActivity = PendingIntent.getActivity(getApplicationContext(),
192837, new Intent(getApplicationContext(), YourActivity.class),
PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager;
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
15000, myActivity);
System.exit(2);
// re-throw critical exception further to the os (important)
defaultUEH.uncaughtException(thread, ex);
}
};
public YourApplication() {
defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
// setup handler for uncaught exception
Thread.setDefaultUncaughtExceptionHandler(_unCaughtExceptionHandler);
}
}
并在Android Manifest中的应用程序标记中设置标记名称=“your.app.application.YourApplication”