lda*_*dam 72 java android exception-handling
如果我的应用程序崩溃,它会挂起几秒钟才会被Android告知应用程序崩溃并需要关闭.所以我想用一般的方法在我的应用程序中捕获所有异常:
try {
// ...
} catch(Exception e) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
并创建一个新的Activity
解释应用程序立即崩溃(并且还让用户有机会发送带有错误详细信息的邮件),而不是因为Android而导致延迟.是否有更好的方法来实现这一点,或者这是否沮丧?
更新:我正在使用支持ART的Nexus 5,我没有注意到我曾经遇到的应用程序崩溃的延迟(我最初谈论的"悬挂").我认为,因为现在一切都是本机代码,崩溃会立即发生,同时获取所有崩溃信息.也许Nexus 5只是快速:)无论如何,这可能不会成为未来Android版本的担忧(鉴于ART将成为Android L中的默认运行时).
CRU*_*DER 95
在这里,检查链接以供参考.
在这里你创建一个类,说ExceptionHandler,implements java.lang.Thread.UncaughtExceptionHandler
..
在这个课程中,你将做一些拯救生命的事情,如创建堆栈跟踪和准备上传错误报告等....
现在是重要的部分,即如何捕获该异常.虽然很简单.在overriden onCreate
方法中调用super方法之后,复制每个Activity中的以下代码行.
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
Run Code Online (Sandbox Code Playgroud)
您的活动可能看起来像这样......
public class ForceClose extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
setContentView(R.layout.main);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
您可以使用通用警报对话框快速显示错误消息.例如...
//******************************************
//some generic method
//******************************************
private void doStuff()
{
try
{
//do some stuff here
}
catch(Exception e)
{
messageBox("doStuff", e.getMessage());
}
}
//*********************************************************
//generic dialog, takes in the method name and error message
//*********************************************************
private void messageBox(String method, String message)
{
Log.d("EXCEPTION: " + method, message);
AlertDialog.Builder messageBox = new AlertDialog.Builder(this);
messageBox.setTitle(method);
messageBox.setMessage(message);
messageBox.setCancelable(false);
messageBox.setNeutralButton("OK", null);
messageBox.show();
}
Run Code Online (Sandbox Code Playgroud)
您还可以在此方法中添加其他错误处理选项,例如print stacktrace
归档时间: |
|
查看次数: |
79843 次 |
最近记录: |