关闭应用程序时出错

时间:2010-04-18 18:51:45

标签: android

我目前正在为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错误,应用程序意外关闭(我应该强制退出)。

我在关闭应用程序之前阅读了一些主题,我知道它可能不会发生这种情况。但是,我应该如何阻止应用程序继续运行?发生错误时如何正确关闭应用程序?

1 个答案:

答案 0 :(得分:3)

  

但我应该如何防止这种情况发生   申请继续运行?

完成当前的活动应该没问题,就像你今天所做的那样。

  

如何关闭应用程序   发生错误时是否正确?

你没有。您关闭组件(活动,服务等)。如果此活动需要SD卡,并且SD卡不可用,请完成活动。

一般来说,您对Android“应用程序”的想法越少,而且您的APK中有更多松散耦合的组件,就越好。