티스토리 뷰
챌린지반 세션 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 51일차 (챌린지반 5주차 세션 정리) (0) | 2024.08.05 |
---|---|
사전캠프 TIL 25일차 (로또의 최고 순위와 최저 순위 - Kotlin) (0) | 2024.05.26 |
사전캠프 TIL 24일차 (기사단원의 무기 - Kotlin | FlutterFlow 프로젝트 웹배포) (0) | 2024.05.24 |
사전캠프 TIL 23일차 (덧칠하기 - Kotlin | FlutterFlow - 관리자 페이지 & 댓글 기능 구현) (0) | 2024.05.23 |
사전캠프 TIL 22일차 (모의고사, 소수 만들기 - Kotlin | FlutterFlow - 로그인/회원가입 구현) (0) | 2024.05.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 레이아웃
- 개발블로그
- kakao api
- 기초 문제
- 귤 고르기
- 파이썬
- shared_preferences
- 스파트타 코딩클럽
- 위젯
- 코틀린
- 무스마
- 9 to 9
- 행렬의 내적
- 프로그래머스 #코틀린 #map
- 안드로이드 스튜디오
- 뷰
- 국비지원
- 프로그래머스
- 그룹화
- 플러터
- android 부트캠프
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함