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

OSCHINA-MIRROR/caoyanglee-Metro

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

#.Metro License API
🚇Метро: простая библиотека маршрутизации на Kotlin

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

Инициализация

//в Application
Metro.init(this)

Добавление станций

Обратите внимание: станции поддерживают Activity, Service, Fragment

  1. Аннотация
//Добавьте аннотацию в соответствующий класс
@Station("/main")
class MainActivity {}
  1. Код
MetroMap.addStation("/main", MainActivity::class.java)

Переход

//Переход к Activity
Metro.with(this)
    .path("/main")
    .put("currIndex", 1)
    .go()
    
//Переход к Service
Metro.with(this)
    .path("/main")
    .serviceLauncher()
    .go()

//Переход к Fragment
Metro.with(this)
    .path("/main")
    .fragmentLauncher()
    .go()

Обработка ошибок

Metro.with(this)
    .path("/main")
    .fail { error ->
        Log.e("metro", error.toString())
    }
    .go()

Предварительная обработка запросов

//Добавление промежуточной станции (похоже на предварительную обработку запросов)
MetroMap.addTransferStation(object : Transfer {

    override fun run(chain: Transfer.Chain): Ticket {
        val ticket = chain.ticket()
        Logger.d("Целевой маршрут = ${ticket.path}")
        return chain.proceed(ticket)
    }
})
//Авторизация пользователя
class UserAuthTransfer : Transfer {

    override fun transfer(chain: Transfer.Chain): Ticket {
        val ticket = chain.ticket()
        if (needLogin(ticket.path)) {
            ticket.clear()
            ticket.path = "/account/login"
            ticket.overridePendingTransition(R.anim.slide_in_from_bottom, R.anim.noting)
        }
        return chain.proceed(ticket)
    }
}
```    private fun needLogin(path: String) = when {
        path.isEmpty() -> false
        //Добавление страниц, требующих проверки авторизации
        path.startsWith("/main") -> true
        else -> false
    }

}

Получение зависимостей

project/build.gradle

allprojects {
    repositories {
        ......       
        maven { url "https://jitpack.io" } 
    }
}

конкретный модуль build.gradle, например app.gradle

Обратите внимание: по умолчанию используется библиотека версии kotlin1.3.60Ссылка

//Plugin for Kapt, required!
apply plugin: 'kotlin-kapt'

//Generated route configuration classes are named with UUIDs. If you want to make the generated route configuration class specific to a module, add the following operation.
kapt {
    arguments {
        arg("metroModuleName", project.getName())
    }
}

//Standard dependencies
dependencies {
    //Only need to depend on the core library once in the base module
    implementation 'com.github.caoyanglee.Metro:lib:{latestVersion}'

    //In modules that require routing functionality, use annotation processors
    kapt 'com.github.caoyanglee.Metro:compiler:{latestVersion}'
}

Оптимизация рекомендаций

По умолчанию Metro.init(this) автоматически сканирует все конфигурационные файлы маршрутов, что является затратной операцией. Мы рекомендуем выполнить следующие оптимизации:

Metro.init(
    context = this,
    autoLoadConfigClass = false //Не использовать автоматическую загрузку
)
//Указание конкретных конфигурационных файлов маршрута для быстрой загрузки
Metro.loadConfigClass("MetroRoute_xxx")

Примечание: Конфигурационные файлы маршрутов генерируются в директориях build/generated/source/kaptKotlin/debug каждого модуля. Все конфигурационные классы находятся в пакете com.pmm.metro.route, различаются только названия классов.

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

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

Введение

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

Обновления

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

Участники

все

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

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