티스토리 뷰
챌린지반 세션 5주차 과제
과제 1번
과제 내용
안드로이드 숙련주차 개인과제 때 만들었던 프로젝트에
함수형 프로그래밍을 활용한 함수를 2개 이상 만든다. (변경도 가능)
점검사항
- 해당 함수는 Pure function을 만족하는가
- 해당 함수는 실행순서가 바뀌어도 정상동작하는가
- 해당 함수는 Side Effect가 없는가
한 마디로 만들어둔 함수 2개를 순수함수로 바꾸라는 과제이다.
데이터 초기화 함수
private fun initData() {
dataList.add(Item(...))
...
}
기존에는 dataList라는 외부 변수에 사이드 이펙트를 발생시켜 데이터를 초기화했다.
private fun initData(): MutableList<Item> {
val dataList = mutableListOf<Item>()
dataList.add(Item(...))
dataList.add(Item(...))
return dataList
}
함수 내에서 dataList를 생성하고 초기화 후 반환하는 형식으로 바꿔서 작성했다.
이 함수는 전역 변수에 의존하지 않으며, 사이드 이펙트 없이 동일한 결과를 반환한다.
아이템 가격 반환함수
private fun itemPrice(price:Int?): String{
return DecimalFormat("#,###").format(price) + "원"
}
아이템 가격을 인자로 받아 1000단위로 콤마를 찍은 문자열을 반환하는 함수이다.
이 함수는 입력에만 의존하며, 사이드 이펙트를 발생시키지 않기에 순수함수에 해당한다.
과제 2번
과제 내용
안드로이드 숙련주차 개인과제에 확장함수를 활용한 기능 1개이상 만들기
액티비티 확장 함수 만들기
fun Activity.notification(){
val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
val builder: NotificationCompat.Builder
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channelId = "one-channel"
val channelName = "Alarm"
val channel = NotificationChannel(
channelId,
channelName,
NotificationManager.IMPORTANCE_DEFAULT
).apply {
description = "Alarm Channel"
setShowBadge(true)
val uri: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
val audioAttributes = AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ALARM)
.build()
setSound(uri, audioAttributes)
enableVibration(true)
}
manager.createNotificationChannel(channel)
builder = NotificationCompat.Builder(this, channelId)
} else {
builder = NotificationCompat.Builder(this)
}
builder.run {
setSmallIcon(R.mipmap.ic_launcher)
setWhen(System.currentTimeMillis())
setContentTitle("키워드 알림")
setContentText("설정한 키워드에 대한 알림이 도착했습니다!!")
}
manager.notify(1, builder.build())
}
ActivityExtension.kt라는 코틀린 파일 하나 만들어서
거기다가 알림 수신 함수를 액티비티의 확장 함수로 정의하였다.
이렇게 하면 모든 액티비티에서 notification함수를 호출할 수 있다.
확장함수 호출
binding.ivNotification.setOnClickListener{
checkNotiPermission()
notification()
}
notfication 함수는 액티비티 어디에서나 호출이 가능하다.
tmi
안드로이드 스튜디오에서 확장 함수는 함수명이 파란색으로 표시된다.
'내일배움캠프 > Android 국비지원' 카테고리의 다른 글
TIL 54일차 (동적 layoutManager 적용) (0) | 2024.08.08 |
---|---|
TIL 53일차 (Compose 특강 1회차 정리) (0) | 2024.08.07 |
TIL 51일차 (챌린지반 5주차 세션 정리) (0) | 2024.08.05 |
TIL 50일차 (챌린지반 4주차 세션 두번째 과제) (0) | 2024.08.05 |
TIL 49일차 (앱개발 숙련 과제 - 선택 과제 구현) (1) | 2024.07.30 |