CustomActivityOnCrash
CustomActivityOnCrash — это библиотека OHOS, которая позволяет запускать пользовательскую активность при сбое приложения, вместо того чтобы показывать ненавистное диалоговое окно «К сожалению, X остановился».
Что включает в себя CustomActivityOnCrash:
Инструкции по использованию
Пример проекта, который содержит исполняемые примеры кода, демонстрирующие использование классов этого проекта, доступен в папке entity/.
Запуск пользовательской обработки ошибок при сбое приложения
Создайте пользовательский вид в макете, как показано ниже:
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:alignment="horizontal_center"
ohos:bottom_padding="$dimen:activity_vertical_margin"
ohos:left_padding="$dimen:activity_horizontal_margin"
ohos:orientation="vertical"
ohos:right_padding="$dimen:activity_horizontal_margin"
ohos:top_padding="$dimen:activity_vertical_margin">
<ScrollView
ohos:height="0vp"
ohos:width="match_parent"
ohos:match_viewport="true"
ohos:weight="1">
<DirectionalLayout
ohos:height="match_content"
ohos:width="match_parent"
ohos:alignment="center"
ohos:orientation="vertical">
<Image
ohos:height="match_content"
ohos:width="match_content"
ohos:component_description="@null"
ohos:image_src="$media:customactivityoncrash_error_image"/>
<Text
ohos:height="match_content"
ohos:width="match_content"
ohos:text="$string:error_occurred"
ohos:text_size="18vp"
ohos:text_style="bold"/>
<Button
ohos:id="$+id:close_button"
ohos:height="match_content"
ohos:width="match_content"
ohos:text="$string:close_app"
ohos:text_size="15vp"
ohos:top_margin="60vp"/>
</DirectionalLayout>
</ScrollView>
</DirectionalLayout>
Добавьте фрагмент, подобный этому, в свой класс Ability, чтобы запустить пользовательскую обработку ошибок:
@Override
public void onStart(Intent intent) {
super.onStart(intent);
ComponentContainer view = (ComponentContainer) LayoutScatter.getInstance(this).parse(ResourceTable.Layout_ability_main, null, false);
setUIContent(view);
CaocConfig.Builder.create()
.bundleName("cat.ereza.customactivityoncrash.demo")
.errorAbility("cat.ereza.customactivityoncrash.demo.CustomErrorAbility")
.apply();
}
Запуск обработки ошибок по умолчанию из библиотеки CustomActivityOnCrash
Добавьте фрагмент, подобный этому, в свой класс Ability для запуска обработки ошибок по умолчанию из библиотеки CustomActivityOnCrash:
@Override
public void onStart(Intent intent) {
super.onStart(intent);
ComponentContainer view = (ComponentContainer) LayoutScatter.getInstance(this).parse(ResourceTable.Layout_ability_main, null, false);
setUIContent(view);
CaocConfig.Builder.create()
.bundleName("cat.ereza.customactivityoncrash.demo")
.apply();
}
Сбой приложения путём создания необработанного исключения
Вызовите сбой приложения, создав необработанное исключение, чтобы отобразить пользовательскую обработку ошибок или обработку ошибок по умолчанию. Для этого используйте что-то вроде этого в своём коде:
throw new RuntimeException("Boom!");
Инструкция по установке
Измените entry build.gradle следующим образом:
dependencies {
implementation project(':library')
}
Измените entry build.gradle следующим образом: Зависимости
Реализация дерева файлов (каталог «libs», включает файлы с расширениями «.jar» и «.har»).
Для использования CustomActivityOnCrash из удалённого репозитория в отдельном приложении добавьте следующие зависимости:
Измените запись build.gradle следующим образом:
dependencies {
implementation 'io.openharmony.tpc.thirdlib:CustomActivityOnCrash:1.0.1'
}
```
**Несовместимости**
1. Библиотека CustomActivityOnCrash не будет работать с любым пользовательским UncaughtExceptionHandler, установленным после инициализации библиотеки, который не вызывает исходный обработчик.
2. Если ваше приложение инициализируется или аварийно завершается, существует вероятность входа в бесконечный цикл перезапуска (это проверяется библиотекой для наиболее распространённых случаев, но может произойти в более редких случаях).
3. Библиотека не была протестирована с включённым мультидексом. Она использует Class.forName() для загрузки классов. Если вы тестируете её с такой конфигурацией, пожалуйста, предоставьте обратную связь!
4. Библиотека не была протестирована в многопроцессных приложениях. Если вы тестируете её в такой конфигурации, также предоставьте обратную связь.
**Отказ от ответственности**
1. Библиотека CustomActivityOnCrash не предотвратит возникновение ANR.
2. Библиотека CustomActivityOnCrash не перехватывает собственные ошибки.
**Лицензия**
Будем рады любому вкладу, чтобы сделать эту библиотеку лучше!
Библиотека лицензирована по [Apache License 2.0](https://codehub-y.huawei.com/Projects-OpenSource-Gitee/CustomActivityOnCrash/files?ref=master&filePath=LICENSE&isFile=true).
Изображение ошибки, используемое в стандартной активности ошибок, лицензировано CC-BY Riff: https://www.sketchport.com/drawing/6119265933459456/lady-bug. Если вы используете изображение в своём приложении, не забудьте упомянуть об этом!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )