목록android (15)
hmk run dev
Activit - 앱이 실행되면 전체 화면에 앱의 UI를 띄워줌 - 사용자와 상호작용하며 이벤트 처리 - 새로운 UI를 화면에 표시 기본적으로 MainActitvity가 앱 실행 시 최초로 보이는 화면을 담당한다. Service 앱의 백그라운드에서 동작하는 작업을 수행하며 서비스를 실행한 앱을 다른 앱으로 전환하더라도 서비스에서 시작한 작업은 백그라운드에서 계속 실행 된다. 서비스는 크게 3가지로 나눌 수 있는데 - 포그라운드 서비스 : 알침창에 서비스가 실행 중임을 표시해준다. 시스템에 의해서 강제로 종료되지 않음 - 백그라운드 서비스 : 사용자에게 보이지 않는 백그라운드에서 작업을 수행하며. 시스템의 리소스가 부족할 경우 강제 종료될 수 있음 - 바인드 서비스 : 서비스와 서비스를 호출하는 앱 구송 ..
Intent (스프링의 @Autowird와 비슷...??) Component를 실행하기 위해 시스템에 넘기는 정보 기본적으로 안드로이드는 component기반이고 이때 내부적으로 개발자가 작성한 Activity 같은 클래스들이 아래와 같이 동작하게 된다. 위 4개의 영역은 각각각의 class지만 상호 결합되지 않은 상태로 실행이 되고. 이것들은 안드로이드에선 component라고 할 수 있다. 안드로이드 애플리케이션을 네 가지 기본요소에는 Activity, Service, Broadcast Reiceiver, Content Provider가 있다. 이때 인텐트(Intent)란 이러한 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 인텐트는 안드로이드 개발 시 매우 빈..
보호되어 있는 글입니다.
요즘엔 List가 없는 앱을 찾기 힘들다. 배민 - 음식점 list 야놀자 - 숙박 list 핀다 - 대출 list 이렇듯 거의 모든 어플엔 list 형식이 있는데 RecycleView말 그대로 재활용이 된다는 것이다. 화면에 보여질 만큼의 view를 생성하고 계속 재활용한다. RecycleView를 사용하기 위한 준비물이 2개가 필요하다. 1. Adapter - view 생성 만든 view 안에서 데이터 바인딩 담당 class MyAdapter(val context: Context, val list : List, var onDeleteListner: OnDeleteListner) : RecyclerView.Adapter() { // 리스트 사이즈 override fun getItemCount(): In..
onCreate() - 사용빈도 높음 - view를 빌드하고 구성 - 전 액티비티나, 전 활동에서 넘어온 데이터 처리 onStart() - 사용자가 스크린을 볼 수 있게 활동을 포그라운드에 넘김 - 사용자와 상호작용을 준비( ex 버튼클릭, 텍스트입력 ) onResume() - 상호작용이 가능하게 되는 단계 - 포커스가 떠날때 까지 계속됨 > 포커스가 떠난다? > ex) 앱 사용중에 전화가 온다 > 다른 액티비티로 이동함, 어플이 꺼짐 onStop() - 사용빈도 높음 - DB에 저장하거나, CPU 소모가 많은 작업 담당
개념에 대해선 따로 다루지 않고 구현에 대해서만 다루겠습니다. 의존성 추가 kapt 추가 apply plugin: 'kotlin-kapt' room 추가 //ROOM def roomVersion = "2.4.1" implementation("androidx.room:room-runtime:$roomVersion") kapt("androidx.room:room-compiler:$roomVersion") entity 추가( 간결함 무엇...? ) @Entity(tableName = "memo") class Memo ( @PrimaryKey(autoGenerate = true) var id: Long?, var memo:String = "") dao 추가( ?? 개쩐다... update빼고 다 구현 ) @Da..
Constraint Layout view를 담는 그릇이 layout이라고 할 수 있다. 보통 안드로이드에서 레이아웃은 수직, 수평 레이아웃을 나눠서 사용할 수 있는데 UI를 구성하다 보면 두개를 모두 써야하는 경우가 많다 그럴 경우엔 레이아웃 안에 레이아웃을 또 넣어서 수평 수직을 표현해야 하는데 앱 퍼포먼스에 좋지 않은 영향을 끼칠 수가 있다. 그래서 나온게 Constraint layout이다 . 반드시 수직과 수평방향 모두에 제약을 두는 레이아웃이다! 장점 1. 자식 뷰 사이의 관계 정의 가능 2. 뷰 비율 조절 가능 3. 레이아웃 중첩 간소화, 유지보수 및 성능 UP 4. Relative, Linear 레이아웃이 구현 할 수 있는 것들을 모두 구현가능 출처 https://www.youtube.com..
페이지 전환 fragment navigation 이용 하나의 activity 그리고 그 안에 여러개의 fragment로 구성 navigation 추가 1. navigation 의존성 추가 gradle.build > dependencies def nav_version = "2.3.5" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" 네비게이션 docs https://developer.android.com/guide/navigation/navigation-getting-started 탐색..
LAMDA ( 개인적으로 코틀린 문법중 제일 어렵다. ) package com.example.kotlin_prac class sample3 { } fun main () { println(square(12)) println(nameAge("형민", 28)) // 확장함수 사용법 val a = "hmk good!" val b = "android" println(a.pizzaIsGreat()) println(b.pizzaIsGreat()) extendsString("hmk", 28) println(calcGrade(91)) // 람다식을 파라미터로 넘겨보기 val lamda : (Double) -> Boolean = { number : Double -> number == 4.341 } println("람다 넘..
안드로이드 앱개발을 배울겸 JAVA 대신 구글에서 공식 개발언어로 채택한 Kotlin으로 개발해보기로 했다! 실제로 배워보니 JAVA와 비교적 매우 간결해진 문법과 편리성이 매우 두드러진다...! FUNCTION package com.example.kotlin_prac // ; 콜론 생략가능 시원~~ fun main () { //helloWorld() //println(add(4,5)) // String Template val name = "hmk" val aka = "good" //println("my name is ${name + aka}I'm a boy") // ${} 표시를 쓰면 변수를 사용가능 //println("this is 2\$a") // 앞에 "\" 백슬래쉬를 쓰면 $를 문자열로 인식 /..