728x90
JetPack 라이브러리
- 안드로이드 개발자 페이지의 소개에 따르면 개발자가 관심있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 제거, 안드로이드 버전과 기기에 일관되게 작동하는 코드 작성을 돕는 라이브러리라고 명시되어 있습니다.
- 권장사항 준수
- 최신 설계 방식을 바탕으로 빌드된 안드로이드 Jetpack 라이브러리는 이전 버전과의 호환성 기능이 통합되어 비정상 종료, 메모리 누수를 줄일 수 있게 해줍니다.
- 상용구 코드 제거
- 개발자가 뛰어난 앱을 만드는 데에만 집중할 수 있도록 백그라운드 작업, 탐색, 수명 주기 관리 등 반복적이고 지루한 활동을 관리해 줍니다.
- 파편화 줄이기
- 안드로이드 버전 및 기기에서 일관되게 작동하는 라이브러리를 사용하여 복잡성을 줄입니다.
요약
: 기존 안드로이드 지원 라이브러리에 더하여 개발자가 더 효율적이고 쉽게, 더 뛰어난 앱을 개발할 수 있도록 반복적인 작업들을 최소화해주고 추가적인 기능들을 제공해주는 라이브러리... 정도로 요약할 수 있을 것 같습니다.
Jetpack 라이브러리는 보통 4가지 컴포넌트로 분류하며 Architecture, UI, Foundation, Behavior 가 해당합니다.
이 중 Architecture는 AAC (Android Architecture Component) 라고 불리며 주로 안드로이드의 컴포넌트들의 생명주기를 처리하는 가이드라인과 기능들을 제공합니다. 오늘은 그 중 Databinding 에 대해서 간략하게 말해 보겠습니다.
데이터 결합 (Databinding)
- 기존엔 앱 내에 존재하는 데이터를 View에 넣기 위해선 프로그래밍 방식의 자바 코드로 일일이 입력해야했습니다.
TextView user_name = (TextView) findViewById(R.id.user_name_text);
user_name.setText("하늘 거인");
- 하지만 Databinding은 xml에서 선언적 형식으로 Model에 있는 데이터를 View에 바로 결합하여 개발자는 데이터를 업데이트 하는 것에만 신경쓰면 되고 View에 결합하는 것은 신경쓰지 않아도 됩니다.
<TextView
android:id="@+id/user_name_text"
android:text="@{viewmodel.userName}" />
사용법
1. build.gradle 설정
android {
...
dataBinding {
enabled = true
}
}
2. 레이아웃 xml 파일 설정
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.example.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/>
</LinearLayout>
</layout>
- 기존에 선언했던 태그들을 <layout> </layout> 태그로 감쌉니다
- <data> </data> 태그 안에 <variable>로 바인딩해 올 객체를 선언합니다.
- 객체 내의 프로퍼티, 메소드를 view들에 @{} 구문을 사용하여 바인딩합니다.
3. activity 클래스에서 바인딩 객체 설정
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
User user = new User("Test", "User");
binding.setUser(user);
}
- 레이아웃 파일에서 <layout></layout>과 <data></data> 태그로 바인딩할 것을 선언하게 되면 자동적으로 해당 레이아웃의 Binding 클래스가 생성됩니다. (예시 : activity_main.xml -> ActivityMainBinding)
- 그리고 자바 activity 클래스에서 binding 객체를 가져온 후 아까 레이아웃에서 바인딩하려고 했던 user 객체를 set합니다. (메서드 또한 자동 생성
표현식
- 레이아웃에서 사용할 수 있는 바인딩 표현식은 꽤 다양합니다. 기본적인 산술 연산, 논리 연산, 비교 연산 등등 상황에 맞게 사용하면 될 듯 합니다.
728x90
'Android' 카테고리의 다른 글
[안드로이드] ViewPager2의 setUserInputEnabled (사용자 입력 통제) (0) | 2020.08.23 |
---|---|
[안드로이드] TabLayout과 ViewPager 사용 (0) | 2020.08.23 |
[안드로이드] View가 그려지는 과정 (0) | 2020.08.23 |
[안드로이드] Parcelable (0) | 2020.08.22 |
[안드로이드] ANR (0) | 2020.08.22 |
댓글