본문 바로가기
[android] concurrent document에 대해 알아본다. [android] concurrent document에 대해 알아본다. https://www.youtube.com/watch?v=4Y3JMvbcxQEhttps://developer.android.com/guide/topics/manifest/activity-element#dlmode -안드로이드 LOS 부터 concurrent document 라는 새념이 생겼다.이는 런타임 시에 앱의 테스크를 몇 개라도 동적으로 생성할 수 있게 된다. -concurrent document 를 적극 활용하는 대표적 앱은 google drive 가 있겠다. -concurrent document 를 하는 방법은 두가지가 있다.첫째는 startActivity 시 Intent 의 flag 로 FLAG_ACTIVITY_NEW_DO.. 2019. 4. 25.
[android] code 와 resource shrink 하자! -android 에서는 ProGuard 를 통해서 사용하지 않는 class, field, method 를 제거할 수 있다.또한 bytecode 를 optimize 하고, 사용하지 않는 code instruction 도 제거하고, 남아있는 코드들에 대해 short name 으로 난독화를 수행한다. Shrink your code -ProGuard 로 code shrinking 을 하려면 gradle 에서 minifyEnable 을 true 를 설정해주면 된다.code shrinking 은 build 시간을 늘리기 때문에 debug 에서는 사용하지 않는 것이 좋고, final apk 에 적용한 후에는 충분한 테스트도 거쳐야 한다. proguard 설정에 따라 에러가 날 수 있다.android { buildTy.. 2018. 11. 23.
[android] Background Optimization ( 백그라운드 최적화 ) -Background process 는 User 가 알 수 없게 cpu, memory, battery 등을 소모한다.Android 7.0 ( API 24 ) 부터는 다음과 같은 제약이 추가되었다. targetSdk 24 이상인 앱의 경우 manifest 에 CONNECTIVITY_ACTION 를 등록해도 broadcast 를 받지 못한다. Context.registerReceiver() 를 통한 Runtime receiver 를 등록한 경우에만 받을 수 있다. 앱은 ACTION_NEW_PICTURE 나 ACTION_NEW_VIDEO broadcast 를 보내거나 받을 수 없다. ( 이것은 Android 7.0 target 이 아닌 단말 기준으로 모든 앱에 작동한다. ) -만약 위에 명시된 Action 들.. 2018. 10. 8.
[android] Gradle Tutorial #1 [android] Gradle Tutorial #1 http://tools.android.com/tech-docs/new-build-system/user-guide Build System 의 목적 code 와 resource 의 reuse 를 쉽게 한다. app 의 여러 variant 에 따라 multi-apk 를 생성하거나, 약간 다른 기능을 하는 app 을 쉽게 생성해낸다. build process 를 쉽게 설정하고, 확장하고, 개인화 할 수 있다. IDE 와 잘 연동된다. 왜 Gradle 인가? plugin 을 통해 custom build logic 을 만들어 낼 수 있는 진보된 빌드 시스템 혹은 툴킷이다. Groovy 기반 DSL ( Domain Specific Language) 을 빌드 로직을 .. 2018. 10. 4.
[android] Java8 을 사용해보자! [android] Java8 을 사용해보자! https://developer.android.com/studio/preview/features/java8-support.html Android 에서 Java8 사용하기 -Android Studio 2.4 Preview 4 이상부터 모든 Java7 과 Java8 언어 특성을 지원한다. -Java7 을 사용하더라도 JDK8 을 이용해서 컴파일하므로 JDK8 은 필요하다. -이전에는 Jack Compiler 를 사용해야 Java8 Compile 이 가능했는데,이제는 desugar 라는 bytecode transformation 만 있으면 된다.Jack 이 더 이상 필요하지 않다. Jack 을 사용하고 있었다면 build.gradle 에서 그 녀석부터 없애라! -J.. 2018. 10. 2.
[android] Shared Element Transition Tutorial ( with transparent bg ) [android] Shared Element Transition Tutorial ( with transparent bg ) https://medium.com/@aitorvs/android-shared-element-transitions-for-all-b90e9361507d#.zoz5i6xkz -LOS 이상부터는 이를 구현하는 것이 매우 쉽다.( https://developer.android.com/training/transitions/start-activity )그러나 그 이전버전도 지원하는 경우 버전분기를 하는 공수가 든다.그래서 새로운 API 없이 Compat 한 방법으로 Transition 하는 방법을 소개한다. -Activity A -> B 로 이동시 동일한 모양을 가진 View 가 있다면,A 에.. 2018. 9. 28.
[SQLite3] 01. SQLite 소개 [SQLite3] 01. SQLite 소개 이 글은 "빠르게 활용하는 모바일 데이터베이스 SQLite3” 이란 글을 보며 필요한 내용만 정리한 글입니다.자세한 내용은 책을 구매해서 보세요-SQLite3 는 안드로이드, 아이폰에서 채택되면서 모바일 환경에서 가장 널리 사용되는 DB 가 되었다. ( 파폭 브라우저, 드롭박스 등에서도 사용 )개발 초창기부터 임베디드 환경을 고려했기 때문에 SQLite3 는 다른 DB 의 대부분의 기능을 지원하면서도 상대적으로 라이브러리 크기가 작고, 메모리가 적은 환경에서도 뛰어난 성능을 발휘한다.오픈 소스 프로젝트이며, 특별한 라이선스 없이 무료로 사용 가능하다. 1. 주요 특징 단일 데이터베이스 파일 데이터베이스의 모든 정보가 단 하나의 파일에 저장된다.테이블 스키마, 레.. 2018. 5. 16.
[android] JobScheduler 호출 flow 분석 [android] JobScheduler 호출 flow 분석 JobScheduler(JobSchedulerImpl ) -JobScheduler 는 abstract class실제 안드로이드 구현체는 JobSchedulerImpl 이며, 이는 constructor 에 전달된 binder 를 통해 통신을 한다. -JobShcedulerImpl 에 전달되는 Binder 는 JobSchedulerService 의 inner class 로 있는 JobSchedulerStub 이다.Stub 에서는 JobSchedulerService 의 여러 함수로 역할을 위임(delegate) 시킨다. JobService-JobService 도 abstract class 로 startJob, stopJob 을 구현하는 Binder .. 2018. 4. 30.
[android] JobScheduler 의 schedule 이 fail 하는 케이스 [android] JobScheduler 의 schedule 이 fail 하는 케이스 Framework 소스 코드 기준은 LOS 5.0.0_r2 ~ MOS 6.0.1_r10 -schedule method 는 RESULT_FAILURE(0) 또는 RESULT_SUCCESS(1) 값 중 하나를 return 한다. -JobScheduler 은 abstract class 이고, 실제 구현 내용은 JobSchedulerImpl 에 있다.해당 코드를 보면 binder 를 통해 schedule 명령을 내리게 되고, 명시적으로 RemoteException 이 발생하면 fail 이 발생한다.@Override public int schedule(JobInfo job) { try { return mBinder.schedul.. 2018. 4. 29.
반응형