Android/Component
-
Android NotificationAndroid/Component 2019. 7. 25. 17:57
Notification은 앱의 각종 상황을 사용자에게 알릴 목적으로 이용된다. support 라이브러리에서 NotificationCompat 클래스를 이용하여 하위 호환성을 확보한다 NotificationManager : 알림을 시스템에 발생시키는 SystemService Notification : 알림 구성 정보를 가지는 객체 NotificationCompat.Builder : 알림을 다양한 정보로 생성 NotificationChannel : 알림의 관리 단위 ( Android Oreo에서 추가 ) NotificationManager 객체 얻는 방법은 간단하다 val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as Noti..
-
Android JobSchdulerAndroid/Component 2019. 7. 25. 17:04
JobSchduler는 Job(특정 업무)를 시스템에 등록시켜 실행시키는 방법이다. Network, Battery 조건 등을 등록하고 이 조건에 맞았을 때 Background 업무를 실행시키기 위한 목적으로 사용한다 해당 기능은 API Level 21 부터 제공이 되었고, background 실행 제한이 강화되기 시작하면서 필요성 증가되었다. 두 가지의 클래스를 사용하는데 아래와 같다. JobInfo : Job 이 실행될 조건 및 조건이 맞을 떄 실행시킨 JobService 정보 JobScheduler : JobInfo를 시스템에 등록시키는 역할 1. JobSchedulerService 클래스 생성하기 @RequiresApi(Build.VERSION_CODES.LOLLIPOP) class MyJobSch..
-
Android Background LimitsAndroid/Component 2019. 7. 25. 15:25
안드로이드 8.0에서 부터 Background에 대해서 제약을 가하기 시작하였다. BroadcastReceiver 제약 Service 제약 이 두가지에 대하여 어떤 제약이 가해졌는지에 대해서 알아보도록 하자 BroadcastReceiver 제약 - 내부 app의 receiver를 암시적 intent에 의해 실행시키는 것을 금지 - 명시적 intent에 의한 실행은 이전과 동일하게 잘 수행된다. - receiver가 특정 component의 코드에서 intent filter로 등록시키고 암시적 intent에 의해 실행되는건 잘 된다. - manifest 파일에 static하게 등록 된 receiver를 암시적을 실행시키는 것이 금지. - 물론 외부 앱의 receiver인 경우 암시적 intent 실행은 잘..
-
Android Component - ServiceAndroid/Component 2019. 7. 24. 23:59
Service는 장시간 background 작업 이라고 정의 할 수 있다. 백그라운드에서 실행되면서 ContentProvider를 업데이트 시키거나 Intent를 발행 혹은 알림을 만들어 내는 역할을 한다. 눈에 보이는 인터페이스 없이 다른 서비스, 액티비티 그리고 브로드케이스트 리시버 수신자를 포함한 다른 어플리케이션 컴포넌트로 부터 시작 중지를 한다. 시작된 서비스는 비활성 액티비티 나 눈에 보이지 않는 액티비티 보다 높은 우선 순위를 받아 런타임의 리소스 관리에 의해 종료될 가능성을 낮춘다. 컴포넌트의 우선순위는 아래의 순서와 같다. (1) 활성 상태 액티비티 (2) pause 상태 액티비티 (3) 움직이고 있는 서비스 (4) 비활성 상태 액티비티 (5) 시작 했지만 아무짓도 안하는 서비스 규칙적으..
-
Android Component - Broadcast ServiceAndroid/Component 2019. 7. 24. 23:30
Boadcast Reveicer는 한마디로 Event Model로 실행되는 Component라고 정의할 수 있다. 또한 Android Component중에서 Intent 매커니즘만 잘 이해하면 가장 쉽다고 말할 수 있다! 예를 들면 배터리가 부족하다던가! 리시버 사용 방법은 간단하다 1. BroadcastReceiver를 상속받은 클래스 생성 class MyBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { Toast.makeText(context, "I am BroadcastReceiver", Toast.LENGTH_SHORT).show() } } 제목 그대로 Broadcas..