Закрыть приложение по ошибке - PullRequest
2 голосов
/ 18 апреля 2010

В настоящее время я пишу приложение для платформы 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 Ответ

3 голосов
/ 19 апреля 2010

Но как мне вместо этого предотвратить приложение продолжает работать?

Завершение вашей текущей деятельности должно быть в порядке, как вы делаете сегодня.

Как вы закрываете приложение правильно, когда возникает ошибка?

Вы не. Вы закрываете компонент (деятельность, сервис и т. Д.). Если для этого действия требуется SD-карта, а SD-карта недоступна, завершите упражнение.

Вообще говоря, чем меньше вы думаете о «приложении» Android и чем больше у вас APK со слабосвязанной корзиной компонентов, тем лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...