일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Navigation
- Android
- recyclerview
- sqlite
- activity
- CollapsingToolbarLayout
- 알고리즘
- LiveData
- AppBarLayout
- notification
- 안드로이드
- onMeasure
- room
- CoordinatorLayout
- kotlin
- ViewModel
- CustomView
- Behavior
- 코틀린
- 백준
- DataBinding
- View
- Algorithm
- BOJ
- HTTP
- onLayout
- lifecycle
- 알림
- hilt
- Coroutine
- Today
- Total
목록Android (안드로이드) (99)
개발일지
AppWidgetProvider 안드로이드에서 Widget에 관련된 생성, 삭제, 수정 등 이벤트를 제공하며 BroadcastReceiver를 통해 이벤트를 수신할 수 있습니다. 안드로이드에서 이러한 이벤트를 쉽게 처리하기 위해 AppWidgetProvider를 제공합니다. 실제로 내부 코드를 보면 BroadcastReceiver를 상속받고 onReceive에서 Action으로 분기하여 onEnabled, onDeleted등 함수를 호출합니다. 즉 개발자는 AppWidgetProvider를 상속받고 해당 함수를 오버로딩하면 됩니다. public class AppWidgetProvider extends BroadcastReceiver { public AppWidgetProvider() { } public ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mt2tr/btrmEFOF9Jf/PA2G6v4li7rnv9BPXITid1/img.png)
위젯 위젯은 사용자의 홈 화면에서 바로 엑세스할 수 있으며, 정보 표현, 앱 제어 등 다양한 작업을 할 수 있습니다. 하지만 위젯은 홈 화면으로 제공되기 때문에 제한이 있습니다. - 제스쳐 : 좌우 스와이프 기능이 제한됩니다. (대부분 홈화면은 ViewPager 형식의 네비게이션을 가지기 때문에 이벤트가 겹쳐서 제한됩니다. - View : RemoteViews를 통해 제공되기 때문에 제한된 View만 사용가능합니다. (참고) 필수 설정 AppWidgetProviderInfo (참고) 위젯에 대한 갱신 주기, Layout, 크기 등 메타 데이터를 설명하며 XML로 정의합니다. AppWidgetProvider (참고) BroadcastReceiver를 상속받았으며 이벤트를 수신하여 처리할 수 있습니다. @A..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MOJ5o/btrhvPWbHzC/VmUFA8Ld2RItNkINpYKbW0/img.png)
알람 앱을 실행 후 MainActivity에서 AlarmActivity로 이동했고 홈 버튼을 눌러 태스크를 백그라운드로 보냈다. 그리고 알람에 맞춰 AlarmDialogActivity가 실행됐다. 그렇다면 AlarmDialogActivity가 백그라운드에 있는 태스크에 속하게 됩니다. 태스크를 포그라운드로 불러오고 백 버튼을 누르면 AlarmDialogActivity에서 어떤 Activity로 가야할까요? 이러한 규칙은 launchMode로 설정할 수 있고, Launch Mode는 manifest 또는 Intent로 설정할 수 있다. * 앱 실행히 하나의 Task가 생성되며 Launch Mode나 Intent를 통해 새로운 Task를 만들 수 있다. Manifest 설정 standard Activity를..
Manifest AndroidManifest.xml이라는 파일이며 프로젝트에 꼭 존재해야 합니다. 기본적으로 Build Tool, Android System, Google Play Store에 필요한 정보를 제공하는 역할을 합니다. 주요 요소 Package Name manifest 태그안에 package를 정의합니다. package는 R class를 만들 때 사용하거나 manifest에 선언된 컴포넌트들의 상대 주소를 찾을 때 사용합니다. ... Component Application, Activity, Service, BroadcastReciever, ContentProvider 같은 주요 요소를 선언합니다. (Manifest에 등록하지 않은 Component는 작동되지 않을 수 있습니다.) name ..
Broadcast Receiver Android에서 화면 켜짐, 핸드폰 켜짐, 문자 수신 등 시스템 이벤트가 발생했을 때 대처해야 하는 경우가 있다. Broadcast Receiver를 사용하여 이벤트를 수신할 수 있습니다. Broadcast Receiver를 사용할 때 주의할 점은 리소스 관리입니다. Broadcast Receiver는 등록되면 계속해서 이벤트를 수신하고 동작하며 이는 메인 쓰레드에서 작업을 진행합니다(Handler를 따로 설정할 수 있지만 Default 값은 메인). -> Broadcast Receiver에서 작업 처리가 오래 걸리는 경우 ANR이 발생할 수 있다. * 시스템앱뿐만 아니라 다른 앱에서도 발생한 ACTION을 수신할 수 있습니다. * Oreo 이후부터 백그라운드에 제한이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2APsG/btrg2g1DAXU/XXCRUayeUZVi5R6KKQy2vk/img.png)
Service 어플리케이션이 종료되도 작업을 유지할 수 있는 요소(Android 4대 Component 중 하나이다.)이다. 크게 Background와 Foreground, Bind로 나눌 수 있습니다. Background는 UI가 제공되지 않고 Foreground는 Notification으로 UI가 제공되며 Bind는 Binder로 Service와 통신할 수 있습니다. * Oreo 이상에서 베터리에 대한 규제가 강화되면서 Background Service를 사용하기 어렵습니다. https://developer.android.com/about/versions/oreo/background?hl=ko#services -> 앱 종료시 Background 종료됩니다. * Service를 생성해도 내부적으로 새로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/A7GGz/btrgDT6we0E/pS9iYP7kyjQv74PaTLPbj0/img.png)
Activity와 Fragment가 생명주기를 갖는 것처럼 View도 생명주기를 갖는다. Constructor View(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) context : 현재 테마와 리소스를 접근할 수 있도록 도와준다. 도한 동적으로 생성할 때 가장 간단한 방법이다. attrs : XML로 View를 Inflate할 때 XML로 속성을 받아오는 인터페이스다. defStyleAttr : 테마에서 기본 스타일을 지정할 수 있고, 기본 스타일에서 Attr값을 찾아와서 적용한다. defStyleRes : defStyleAttr에서 값을 찾을 수 없는 경우 defStyleRes를 사..
View가 그려지는 순서는 measure -> layout -> draw 과정을 거친다. 또한 전위순회 방식(부모를 그리고 자식을 형제순으로) 으로 그린다. Measure measure(widthMeasureSpec: Int, heightMeasureSpec: Int) View의 크기를 측정하는 과정이다. final 함수이지만 내부적으로 onMeasure를 호출하고 onMeasure를 재정의하여 사용할 수 있다. 아직 ChildView는 measure된 상태가 아니기 때문에 width, measuredWidth 는 0이 반환될 수 있다. setMeasureDimension(measuredWidth: Int, measuredHeight: Int) View의 크기를 측정한다. onMeasure에서 필수적으로..