플로우바인딩 1.0

6480 단어 androidkotlin
FlowBinding 의 초기 릴리스 이후 1년이 넘었습니다.

작년에 우리는 AndroidX 라이브러리를 위한 4개의 새로운 아티팩트를 추가했고, 최소 SDK를 API 14까지 떨어뜨렸으며, 상태 변경을 내보내는 위젯을 위한 새로운 APIInitialValueFlownew API docs을 도입했습니다.

오늘 저는 FlowBinding의 1.0 stable release을 공유하게 되어 기쁩니다!

새로운 기능



대부분의 API는 작년 첫 공개 릴리스( ) 이후 동일하게 유지되었지만 지난 14개월 동안 라이브러리에 상당한 개선을 이루었습니다.

새로운 아티팩트



우리는 대부분의 새로운 UI 위젯이 개발되고 있는 flowbinding-material에 대한 바인딩을 제공하는 데 초점을 맞추었지만 AndroidX 라이브러리를 위한 4개의 새로운 아티팩트도 추가했습니다.

  • flowbinding-activity - AndroidX Activity에서 OnBackPressedDispatcher에 바인딩 제공

  • flowbinding-lifecycle - 수명 주기 변경 이벤트를 AndroidX Lifecycle에서 Flow<Lifecycle.Event>로 바꿉니다.

  • flowbinding-preference - AndroidX Preference (Settings)에서 PreferenceEditTextPreference에 대한 바인딩을 제공합니다.

  • flowbinding-viewpager - 레거시flowbinding-viewpager2 아티팩트에 대해 androidx.viewpager.widget.ViewPager의 바인딩을 백포트합니다.

  • 최소 SDK 14



    원래 필요한 minSdkVersion FlowBinding은 API 21이었습니다. 이는 대부분의 사용자에게 합리적이지만 신흥 시장을 위해 개발하는 사용자에게는 낮은 API 수준에 대한 지원이 여전히 필수적입니다(자세한 내용은 여기 참조).

    이제 minSdkVersion를 API 14로 떨어뜨렸습니다.

    초기 값



    Slider의 현재 값(최근에 추가된 Material Component )과 같이 내부적으로 상태를 유지하는 UI 위젯의 경우 현재 값을 수집할 때 즉시 내보내야 하는지 여부를 나타내는 선택 사항emitImmediately: Boolean을 제공하는 데 바인딩이 사용되었습니다.

    @CheckResult
    @UseExperimental(ExperimentalCoroutinesApi::class)
    fun Slider.valueChanges(emitImmediately: Boolean = false): Flow<Float> = callbackFlow {
    ...
    }
    

    emitImmediately의 기본값은 false이며 not everyone agrees입니다.

    커뮤니티 내에서 논의한 후 상태 변경을 내보내는 바인딩에 대한 새InitialValueFlow를 도입하기로 결정했습니다(아이디어를 제공한 Sven Jacobs에게 감사드립니다).

    AnInitialValueFlow은 Flow 수집 즉시 위젯의 현재 값(상태)을 내보냅니다.

    이것은 emitImmediately 의 이전 기본값을 false 에서 true 로 효과적으로 변경했지만 유형 자체에서 동작을 더 명확하게 전달합니다.

    현재 값의 초기 방출을 건너뛰려면 skipInitialValue()에서 InitialValueFlow 함수를 호출하십시오.

    slider.valueChanges()
        .skipInitialValue()
        .onEach { value ->
            // handle value
        }
        .launchIn(uiScope) // current value won't be emitted immediately
    


    이는 RxBinding의 InitialValueObservable 와도 일치합니다.

    새 API 문서



    FlowBinding에는 많은 아티팩트와 API가 있습니다. 이제 Dokka 1.4에서 제공하는 project website과 함께 각 아티팩트에서 사용할 수 있는 모든 전이적 AndroidX 종속성 및 바인딩을 문서화하는 새 파일new API docs이 있습니다.



    무엇 향후 계획?



    Jetpack Compose는 분명히 Android용 UI 개발의 미래이며 FlowBinding은 특히 곧 사라지지 않을 현재 세대의 UI 도구 키트를 대상으로 합니다. material-components-android 라이브러리는 많은 새로운 보기 기반 구성 요소가 추가되거나 계획되면서 여전히 활발하게 개발되고 있습니다.

    따라서 새로운 머티리얼 디자인 구성요소(예: TimePicker )가 출시되면 AndroidX 바인딩을 유지하고 바인딩을 추가하는 작업을 계속할 계획입니다.

    감사!



    지난 14개월 동안 FlowBinding을 사용하고, 버그를 보고하고, 기능을 요청하고, 토론에 참여하고, PR을 보내주신 모든 분들께 감사드립니다. 이 모두가 오늘 라이브러리를 통해 달성한 성과에 기여했습니다!

    좋은 웹페이지 즐겨찾기