1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HarmonyOS-tpc-CustomActivityOnCrash

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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!");

Инструкция по установке

  1. Чтобы использовать модуль CustomActivityOnCrash в примере приложения, добавьте следующие зависимости в модуль «entry» для генерации hap:

Измените entry build.gradle следующим образом:

dependencies {
    implementation project(':library')
}
  1. Чтобы использовать CustomActivityOnCrash в отдельном приложении, убедитесь, что добавили «CustomActivityOnCrash.har» в папку libs модуля entry, как указано ниже:

Измените 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/HarmonyOS-tpc-CustomActivityOnCrash.git
git@api.gitlife.ru:oschina-mirror/HarmonyOS-tpc-CustomActivityOnCrash.git
oschina-mirror
HarmonyOS-tpc-CustomActivityOnCrash
HarmonyOS-tpc-CustomActivityOnCrash
master