전체 글
-
[안드로이드] NotificationChannel카테고리 없음 2024. 4. 15. 09:40
사용 이유 API 26 이상부터 추가된 기능으로 알림을 보내려면 해당 기능을 적용해주어야 한다. 사용법 해당 메서드에서 원하는 기능을 추가 후 NotificationManager에 등록해주면 된다. 같은 ID의 NotificationChannel은 한번만 등록되니 필자는 메인 액티비티에서 실행되도록 했다. fun initNotificationChannel() { val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager val notificationChannel = NotificationChannel( "ChannelId", "ChannelName", NotificationManager.IMPORTANCE_..
-
[안드로이드] RecyclerView카테고리 없음 2024. 4. 9. 14:43
무엇인가? ListView의 상위호환으로 여러 아이템의 View를 재사용하며 스크롤 가능한 화면을 만든다. 같이 사용하는 기능 Adapter 데이터와 RecyclerView 사이를 연결하기 위해 존재하는 객체이다. ViewHolder 화면에 표시될 데이터를 저장하는 역할이다. 스크롤해서 보이지 않는 View를 재활용하기 위해 해당 View를 기억하는 객체입니다. 사용법 class DescriptionAdapter( private val descriptions: List ) : RecyclerView.Adapter() { // View의 정보를 담고 있는 RecyclerView.ViewHolder를 상속하는 클래스다. inner class Holder(binding: ItemDescriptionBindin..
-
[패턴] 정적 팩토리(Factory) 패턴카테고리 없음 2024. 4. 8. 16:38
사용 이유 의미있는 이름를 부여할 수 있다. (가독성 좋은 코드) 인터페이스를 사용한다면 하위 타입을 반환할 수 있다. 싱글톤과 연계하여 사용할 수 있다. 객체 생성을 캡슐화 할 수 있다. 네이밍 from - 하나의 인자를 받아서 객체 생성 of - 여러 인자를 받아서 객체 생성 getInstance - 싱글톤 newInstance - 새로운 인스턴스 생성 간단한 사용법 class Person private constructor( val name: String, val order: Int ) { companion object { fun of(name: String, order: Int): Person = Person(name, order) } } fun main() { val person = Person..
-
[안드로이드] 액티비티 수명주기 콜백 메서드 호출 순서카테고리 없음 2024. 4. 8. 09:57
MainActivity에서 TestActivity 호출 시 MainActivity에서 onPause() 호출 TestActivity에서 onCreate() -> onStart() -> onResume() 순서로 호출 MainActivity에서 onStop() 호출 TestActivity에서 뒤로가기 TestActivity에서 onPause() 호출 MainActivity에서 onRestart() -> onStart() -> onResume() 순서로 호출 TestActivity에서 onStop() -> onDestroy() 순서로 호출
-
[안드로이드] 뷰 바인딩카테고리 없음 2024. 4. 5. 09:54
기존 findViewById를 사용했었지만 뷰 바인딩으로 xml의 id를 코드에서 직접 참조할 수 있게 되었다. 뷰 바인딩을 사용하려면 build.gradle.kts에서 아래 설정을 활성화 해주어야 한다. android { viewBinding { enable = true } } 사용법 뷰 바인딩으로 xml의 id를 참조할 시 카멜 케이스로 자동으로 바뀌며 참조할 수 있게 되었다. 또한 뷰 바인딩 사용 시 setContentView를 binding.root로 해줘야 한다. (기존 방식으로 id로 setContentView를 했다고 가정하고 바인딩으로 내부 스타일을 바꾼 경우 화면에서 바뀌지 않는다.) // 기존 방식 class MainActivity : AppCompatActivity() { privat..
-
[패턴] 싱글톤(Singleton) 패턴카테고리 없음 2024. 4. 3. 11:36
정의 객체의 인스턴스가 메모리에 한개만 생성되는 패턴이다. 메모리 절약을 위해 인스턴스를 다시 만들지 않고 기존의 인스턴스를 가져와서 사용하는 방식이며, 어디서든지 데이터 접근이 가능해진다. 사용법 클래스의 companion에 UserRegistry를 저장하고 있다가 필요할 때 꺼내갈 수 있는 getInstance() 함수를 놓아주면 된다. data class User( val id: String, val password: String, val name: String ) class UserRegistry { companion object { private var userRegistry: UserRegistry? = null fun getInstance(): UserRegistry { return user..
-
[안드로이드] 입력 가능한 다이얼로그 띄우기카테고리 없음 2024. 4. 3. 10:47
AlertDialog 생성 후 EditText를 View로 설정해주고 show 해주면 된다. setPositiveButton는 확인, setNegativeButton는 취소 버튼으로 생각하면 될 것 같다. class MyPageActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my_page) showDialog() } private fun showInputDialog() { val input = EditText(this) AlertDialog.Builder(this).apply { ..