본문 바로가기

activity

[Android][DI] ViewModel onCleared 함수가 호출 되지 않을 때 Android Architecture Component 라이브러리에서 제공하는 ViewModel 클래스에서 onCleared라는 함수를 override 할 수 있습니다. 이 함수에서 ViewModel이 라이프사이클에서 종료가 되었을 때 호출 되어 불필요한 메모리를 초기화 시킵니다. (CompositeDisposable를 정의하여 onCleared 함수에서 clear를 시키기도 하죠.) 그런데 이상하게 ViewModel을 생성한 Activity나 Fragment를 종료 시켰는데 onCleared 함수가 호출이 되지 않을 때가 있다. 그럼 아래 두 가지를 테스트 해봐라. 1. Android Support 라이브러리 버전 확인 Android Support 라이브러리 버전이 27.1.0 이하일 경우 onClea.. 더보기
[Android] 권한 승인 시, Activity가 깜빡이는 현상. (Blink) Android M 버전 부터 권한 때문에 다들 이슈가 많을 겁니다. 이중 경험 했던 한 이슈를 공유하고자 합니다. M 버전을 대응 하기 위해 승인 팝업을 띄웠는데요.팝업에서 승인을 하면, 백그라운드에 있는 Activity가 Refresh 되면서 깜빡이는 현상이 발생 합니다. 원인이 무얼까 아무리 찾아봐도 소스상에는 큰 문제가 없는 것 같고,카톡은 깜빡이는데 깜빡이지 않는 앱들도 있으니 골치가 아팠지요. 해결책은 아주 간단했습니다. build.gradle 에 targetSDKVersion 을 23으로 설정 하면 됩니다. 23 하위 버전으로 설정 하게 되면 Refresh가 되고,23 버전 부터는 자연스럽게 동작이 이뤄집니다. 참고하세요. 더보기
[Android] Glide Library 사용시 참고 사항 Glide Library를 이용하여 이미지를 로딩할 때, 아래와 같은 Exception이 발생하신 분은 한번 참고해보세요.Exception이 발생하지 않더라도 안정성을 위해 한번 보셔도 나쁘지 않을 듯 합니다. Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent { act=refresh_main_navi_event flg=0x10 } in com.package.activity.user.MainActivity$6@283944fc at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:933) at android.os.Handler.handleCallbac.. 더보기
[Android] Activity 간 Material Design Transition 적용 Fragment 간 Material Design 이동은 지난 포스트에 올렸었다.http://gogorchg.tistory.com/entry/Android-setCustomAnimations-%EC%9D%B4-%EB%8F%99%EC%9E%91%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%84%EB%95%8C 이번엔 Activity 에서 이동 시, Material Design을 적용하는 방법 이다. Fragment에 비해서 간단하지만, 그만큼 제약이 있어 보인다. 항상 잊지 말아야 하는 부분은 이 기능은 API 21 이상 부터 지원된다는 것을 인지하자. 1. 연결을 시키고자 하는 View에 각각 transitionName을 할당 한다.2. 다음 startActivity 호출 부분을 아래와 같.. 더보기
[Android] Activity slide transition 위 파일을 가지고 아래 소스를 이용하면 Activity 간 좌우로 슬라이드 이동이 되도록 설정 할 수 있습니다. activity.startActivity(intent); activity.overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out); activity.finish(); activity.overridePendingTransition(R.anim.activity_slide_enter, R.anim.activity_slide_exit); 참고하세요. http://stackoverflow.com/a/28513231/3534559 더보기
[Android] Activity 호출 시, Wake Lock 관련 테스트 화면이 꺼진 상태에서 Activity를 호출 할 때, 화면에 어떻게 표현 할지 지정해주는 Flag를 테스트 해보았습니다.Flag는 아래 종류와 같습니다. // KeyGaurd 관련WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED : 폰에 Lock이 상태 이어도 무조건 보여 주겠다. (Activity가 종료 하면 Lock 화면이 나옴)WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD : 폰이 Lock 상태 이면 보여 주지 않음. (Lock 을 해제 해야만 보임) 하지만, Lock 상태가 아니면 보여줌. ( 스와이프나 드래그 상태는 Lock 화면이 안나옴) // 화면 ON/OFF 관련WindowManager.LayoutParams.F.. 더보기
[Android] getBaseContext, getApplicationContext 설명 SharedPreferences를 사용하다 분명 같은 어플리케이션인데 다른 class에서 값을 못가져오는 문제가 있어서그때 좀 알아봤었는데 일단 영어를 잘하지 못해 제 나름도로 이해하고 해석한건 이렇습니다. View.getContext()현재 실행되고 있는 View의 context를 return 하는데 보통은 현재 활성화된 activity의 context가 된다. Activity.getApplicationContext()어플리케이션의 Context가 return된다. 현재 activiy의 context 뿐만 아니라 application의 lifeCycle에 해당하는 Context가 사용된다. ContextWrapper.getBaseContext()자신의 Context가 아닌 다른 Context를 acce.. 더보기
[Android] Intent Flag 정리 Activity 생성시 Intent Flag 사용방법은 다들 알고 있겠지만 다음과 같음intent.addFlag(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 1. FLAG_ACTIVITY_BROUGHT_TO_FRONT 시스템에서 설정하는 값이며, 같은 task에 Activity가 존재할 경우에 Activity의 실행모드가 singleTask이면 자동으로 설정됨 2. FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 테스크가 리셋될 때 플래그가 사용된 액티비티부터 위의 액티비티가 모두 삭제됩니다. 예) ABCD -> B call - > AB FLAG_ACTIVITY_RESET_TASK_IF_NEEDED플래그의 설정에 의해 리셋이 이루어지게 됩니다. 시스템에 의해 홈.. 더보기