关闭应用程序,我目前正在写为Android平台需要安装的SD卡(或ExternalStorage)的应用程序。我知道它可能不是最好的方式来要求类似的东西,但应用程序会处理大量的数据,我甚至不想考虑将其存储在设备的存储上。误差
无论如何,为了确保应用程序不会在没有外部存储的情况下运行,我会快速检查活动的onCreate
方法。如果卡没有安装,我想显示一条错误消息,然后退出应用程序。
我目前的做法是这样的:
public void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try
{
// initialize data storage
// will raise an exception if it fails, or the SD card is not mounted
// ...
}
catch (Exception e)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
.setMessage("There was an error: " + e.getMessage())
.setCancelable(false)
.setNeutralButton("Ok.", new DialogInterface.OnClickListener()
{
public void onClick (DialogInterface dialog, int which)
{
MyApplication.this.finish();
}
});
AlertDialog error = builder.create();
error.show();
return;
}
// continue ...
}
当我运行应用程序,异常得到提高(我提出来手动检查,如果一切正常),正确地显示错误消息。但是,当我按下按钮,应用程序关闭,我得到一个Android错误,应用程序意外关闭(我应该强制退出)。
我在关闭应用程序之前阅读了一些主题,我知道它可能不会发生这种情况。但是,我应该如何阻止应用程序继续运行?发生错误时如何正确关闭应用程序?
您的代码似乎按照您建议的方式工作。我没有看到关于应用程序意外关闭的任何警告。也许你的问题在别处。 – 2010-04-18 20:15:31
在Eclipse中使用'adb logcat',DDMS或DDMS透视图来查看与强制关闭错误相关联的Java堆栈跟踪。这将帮助你诊断你的问题。我同意tkryger的看法,即不会显示您的错误与您在此处列出的代码直接相关。 – CommonsWare 2010-04-18 20:32:29
噢!我在关闭未打开的数据库的'onDestroy'处理程序中有一些较旧的代码。这可能引发了一个例外。谢谢你的评论!但是,我仍然不太确定它是否是正确的方法,所以如果有更好的方法,请告诉我:) – poke 2010-04-18 20:35:36