서포트 라이브러리

v4 노티피케이션컴팻, 뷰페이저, 로더

v7 AppCompat, Theme.AppCompat, 툴바, CardView, RecyclerView, Annotation, Design 네비게이션 드로워, fab, snackbar 등


Headsu-Up Notification 알림이 앱 상단에 표시

.setPriority를 최대로 혹은? .setVibrate(퍼미션 필요) 확인필요


RecyclerView StaggeredGridLayoutManager 형태가 일정하지 않은 아이템


사이즈 고정시 setHasFixedSize(true)로 성능 개선


ItemDecoration 을 이용해 구분선 등 작업 offset(여백) onDraw(표시)


ItemTouchHelper 밀어서 삭제하거나 데이터를 이동 SimpleCallback 구현


블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,
ContentProvider는 안드로이드 스튜디오에서 생성마법사로 간단히 생성가능
exported 다른 앱에 공개할지 여부

adb 로 contentprovider에 접속
adb shell content query --uri content:://com.advanced.android/wordoftoday 
--projection _id:words:name
adb shell content query --uri content:://com.advanced.android/wordoftoday/0 
--projection _id:words:name
adb shell content query --uri content:://com.advanced.android/wordoftoday 
--projection _id:words:name --where "name='Taiki'"
adb shell content insert --uri content:://com.advanced.android/wordoftoday/ 
--bind name:s:Shunsuke --bind date:i:20151015 --bind words:s: '오늘은 멋진 날'
혹은 페이스북에서 개발한 Stetho를 이용

wakelock 화면 on cpu on full_wake_lock (deprecated)
화면 on(약간 어두움) cpu on screen_dim_wake_lock (deprecated)
화면 off cpu on partial_wake_lock
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 을 이용
서포트 라이브러리 WakefulBroadcastReceiver 사용 (60초만 얻고 해제됨) 퍼미션 사용
사용 후 WakefulBroadcastReceiver.completeWakefulIntent()로 해제

wakelock 상태 확인 adb shell dumpsys power
블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,

AppCompatActivity를 이용할 수 없을 때는 AppCompatDelegate를 이용한다.

AppCompatDelegate delegate = new AppCompatDelegate(this);
delegate.setContentView(R.layout.activity_main);


액티비티 수명주기는 익히 알고 있고 사용하고 있지만 

처리 예에 대한 가이드가 있어서 작성한다.


액티비티 수명주기와 처리 예


 메서드명 

 시점 

 처리 예 

 onCreate

 생성 시

 초기화 처리나 뷰 생성 

 onStart

 비표시 시

 통신이나 센서 처리 시작 

 onRestart

 표시 시(재시작)

 보통은 X

 onResume

 최전면 표시

 애니메이션 등 화면 갱신

 onPause

 일부 표시 상태 

 화면갱신 (일시)정지, 리소스 해제

 onStop

 비표시 상태

 통신이나 센서 처리 정지 

 onDestory

 폐기 시

 필요없는 리소스 해제, 액티비티 참조 정리 


같은 앱에서 시작된 액티비티는 같은 백스택에 쌓인다

taskAffinity의 속성에 따라 소속되는 태스크가 달라진다

launchMode에 따라 액티비티 생성여부, 새로운 태스크에 속하는 등 시작이 다르다


액티비티 재생성시 onSaveInstanceState/onRestoreInstanceState 에서 저장하고 복원


액티비티 런치모드 

 launchMode 

 내용 

 standard

 매번 액티비티의 인스턴스 새로 생성 기본값 

 singleTop 

 같은 액티비티가 최상위에서 실행중이면 생성x onNewIntent 

 singleTask

 1개의 태스크에 인스턴스 존재, 같은 액티비티 있으면 생성x

 singleInstance 

 1개의 태스크에 1개의 인스턴스만, 다른 액티비티 포함x, 

 같은 액티비티 생성x 


싱글태스크에서 taskAffinity를 설정하면 여러개의 태스크에서 

singleTast, singleInstance 로 설정하면 startActivityForResult 불가

바로 RESULT_CANCELED가 반환


adb 백스택 확인 : adb shell dumpsys activity activities


화면 밀도 dp와 px


 밀도

 dp

 px

 ldpi

 1dp

 0.75px 

 mdpi

 1dp

 1px

 hdpi

 1dp

 1.5px

 xhdpi

 1dp 

 2px

 xxhdpi

 1dp 

 3px

 xxxhdpi

 1dp

 4px


fragment lifecycle

 메서드명 

 시점 

 실행하는 처리의 예

 onAttach

 액티비티 연결

 getActivity()는 널

 onCreate

 생성 시

 초기화

 onCreateView

 생성 시

 뷰 생성

 onActivityCreated

 생성 시

 초기화, 뷰 생성

 onStart

 비표시 상태

 표시 전 시점

 onResume

 표시 시

 필요한 애니메이션 등 화면 갱신

 onPause

 일부 표시 상태

 화면갱신 처리 (일시)정지, 리소스 해제

 onStop

 비표시 상태

 비표시된 시점

 onDestoryView

 폐기 시

 필요 없는 리소스 해제

 onDestory

 폐기 시

 필요 없는 리소스 해제

 onDetach

 폐기 시

 필요 없는 리소스 해제


아래 두줄은 블로거가 추가한 내용이다.

기존 생성된 프래그먼트가 액티비티에 추가될 땐 onCreateView 이하부터 시작된다.

onCreate에서 해줘야 다시 반복되지 않는다.


customview 에서 layout 대신에 merge태그를 쓰면 기존 레이아웃에 포함된다


ui를 갖지 않는 headless 프래그먼트 뷰 재생성시에도 재생성되지 않는다

네트워크 탐지등에 사용

setRetainInstance(true)

블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,