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

OSCHINA-MIRROR/chinasoft_ohos-ohos-weak-handler

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

ohos-weak-handler

Проект

  • Название проекта: ohos-weak-handler.
  • Серия: openharmony, адаптация сторонних компонентов.
  • Функция: более безопасная реализация памяти ohos.eventhandler.EventHandler.
  • Состояние переноса проекта: основная функция выполнена.
  • Различия в вызовах: нет.
  • Версия разработки: sdk6, DevEco Studio2.2 beta1.
  • Базовая версия: Release 1.2.

Демонстрация эффекта

sc1

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

Добавьте зависимость в файл build.gradle на уровне модуля:

// Добавляем репозиторий Maven
repositories {
    maven {
        url 'https://s01.oss.sonatype.org/content/repositories/releases/'
    }
}

// Добавляем библиотеку зависимостей
dependencies {
    implementation 'com.gitee.chinasoft_ohos:ohos-weak-handler:1.0.1'   
}

Если не удаётся запустить, удалите файлы проекта .gradle,.idea,build,gradle,build.gradle и создайте новый проект с вашей версией. Скопируйте соответствующие файлы нового проекта в корневой каталог.

Использование

Проблема

Оригинальная реализация Handler всегда сохраняет жёсткую ссылку на обработчик в очереди выполнения. Любой объект в Message или Runnable, отправленный в ohos.eventhandler.EventHandler, будет жёстко ссылаться на него некоторое время. Если вы создадите анонимный Runnable и вызовете postTask с большим таймаутом, этот Runnable будет удерживаться в памяти до истечения таймаута. Даже если ваш Runnable кажется небольшим, он косвенно ссылается на класс владельца, который обычно является чем-то большим, чем Activity или Fragment.

Вы можете прочитать больше в нашем блоге.

Решение

WeakHandler сложнее, чем ohos.eventhandler.EventHandler: он будет хранить WeakReferences для runnables и сообщений, и GC сможет собрать их, как только экземпляр WeakHandler больше не будет ссылаться.

Использование

Используйте WeakHandler, как обычно используете Handler.

Пример вызова Java **

import com.badoo.mobileDemo.util.WeakHandler;

public class ExampleAbility extends Ability {

    private WeakHandler handler; // Нам всё ещё нужна хотя бы одна жёсткая ссылка на WeakHandler

     @Override
    public void onStart(Intent intent) {
        handler = new WeakHandler();
        ...
    }

    private void onClick(Component view) {
        handler.postTask(new Runnable() {
            view.setVisibility(Component.VISIBLE);
        }, 5000);
    }
}

Информация о тестировании

CodeCheck: тестирование кода без исключений.
CloudTest: тестирование кода без исключений.
Проверка безопасности вирусов: пройдена.
Текущая версия demo: основные функции аналогичны исходному компоненту.

Итерация версии

  • 1.0.1

Авторские права и лицензия

Weak Handler предоставлен Badoo Trading Limited и выпущен под лицензией MIT.

Создано Дмитро Воронкевичем

##Блог Подробнее читайте в нашем техническом блоге или изучите другие наши проекты с открытым исходным кодом.

Комментарии ( 0 )

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

Введение

Слабая ссылка на Handler, небезопасный с точки зрения памяти. Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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