2015-07-23 3 views
-1

Я хочу, чтобы некоторые классы, которые улавливали ошибки во время выполнения на Android, предлагают пользователю возможность восстановить последнее сохраненное состояние экземпляра приложения.Обработка ошибок выполнения на android

Я думал о расширении классов Activity и Fragment и реализовал то, что сохраняет их состояние. Тем временем другой класс обрабатывает каждое начало действия или фрагмента, помещая их в стек.

Я хочу поймать все возможные исключения в приложении, надеясь сделать ошибки менее назойливыми для пользователя.

Любые советы о том, как я должен справиться с этим?

Как эта проверка ошибок повлияет на производительность приложения?

ответ

0

Это нехорошее решение, и я не знаю, полезно ли это для вас, но вы можете поймать исключения в классе приложений.

public class MyApplication extends Application 
{ 
    public void onCreate() 
    { 
    // Setup handler for uncaught exceptions. 
    Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler() 
    { 
     @Override 
     public void uncaughtException (Thread thread, Throwable e) 
     { 
     handleUncaughtException (thread, e); 
     } 
    }); 
    } 

    public void handleUncaughtException (Thread thread, Throwable e) 
    { 
    e.printStackTrace(); 
    // do what ever you want. 
    } 
} 
+0

Я думаю, что это то, что мне нужно. Просто, чтобы быть уверенным ... будут ли они устранять исключения, которые выполняются в рабочих потоках? – kimv

+0

Это было быстрое исправление для устаревшего кода Android, чтобы прекратить получать исключения, и это было успешно. После того, как я вложил в него это, не было получено отчетов о сбоях. (Я буду рад, если вы примете мой ответ. Спасибо) – savepopulation

+0

спасибо. это сработало! просто составил список фрагментов и действий, выполнив activityLifeCycleCallbacks и обработал их оттуда – kimv

0

Вы можете использовать блоки захвата попыток, чтобы уловить ошибки времени выполнения. Если вы используете try catch эффективно с помощью бросков, ваше приложение не будет разбиваться на первое место, следовательно, не нужно поддерживать стек действий. btw поддержание стеков предыдущей деятельности в любой памяти неэффективно и не рекомендуется.

+0

Я не думал о сохранении всей деятельности в памяти, просто ссылку на то, что деятельность была последней открытой (уникальный идентификатор для каждого вида деятельности), и вновь открыть последнюю перед крушением. Хотя я не уверен, насколько важно сохранить состояние экземпляра каждого вида деятельности. Я мог бы обойтись без – kimv

+0

PS, я использую try-catch настолько эффективно, насколько могу, но я программист, моя программа обязательно рухнет, по крайней мере, рано или поздно – kimv

+0

аварии происходят из-за неизвестных ошибок, следовательно, там не является полным доказательством вашего приложения. поэтому единственный способ - если он сработает, собрать отчет о сбоях из консоли разработчика, исправить его, как только сможете, и опубликовать новое обновление для пользователей. – Yogesh