Software

안드로이드 플랫폼 퍼미션(permission)

L OS부터 안드로이드 어플리케이션은 퍼미션을 protectionLevel에 따라 4가지로 구분하고 있다. 앱 개발자 입장에서는 얼마나 쉽게 권한을 얻을 수 있느냐가 중요한데, 이를 순서대로 정리하면 아래와 같다. normal : <use-permission/> 선언 후, 사용자 동의 없이 사용 가능 dangerous : <use-permission/> 선언 후, 사용자 동의 하에 사용 가능 signatureOrSystem : 아래 signature에 해당하거나, 단말 출시 시 미리 내장되어 […]

안드로이드 플랫폼 퍼미션(permission) 더 읽기"

shadow$_monitor_, shadow$_klass_

안드로이드 API21부터 shadow$monitor(이하, monitor)와 shadow$klass(이하, klass) 변수가 추가되었다. 먼저, monitor 변수는 hashcode() 메소드에서 사용하기 위해 추가되었다. klass 변수는 Brooks pointer라는 이름의 컨셉을 구현하기 위한 것으로 보인다. 이 컨셉에서 힙 메모리에 있는 모든 객체(object) 속의 klass 변수는 자기 자신 객체를 가리키는 역할을 한다. 그리고, GC를 위해 객체가 다른 장소로 이동(정확히는 복사 후 삭제)될 때 새로운 객체를 즉시

shadow$_monitor_, shadow$_klass_ 더 읽기"

java.lang.IllegalStateException: Failure saving state: … has target not in fragment manager: …

프레그먼트를 사용하다보면, 아래와 같은 에러를 만날 수 있다. Shutting down VM FATAL EXCEPTION: main Process: me.sunphiz.android.fragment, PID: 18882 java.lang.IllegalStateException: Failure saving state: CalleeFragment{68fee09 #7 CalleeFragment} has target not in fragment manager: CallerFragment{9c5480e} at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1843) at android.support.v4.app.FragmentController.saveAllState(FragmentController.java:134) at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:566) at android.support.v7.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:498) at android.app.Activity.performSaveInstanceState(Activity.java:1474) at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1317) at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:5398) at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4700) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:4774) at android.app.ActivityThread.access$1400(ActivityThread.java:222) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1819) at

java.lang.IllegalStateException: Failure saving state: … has target not in fragment manager: … 더 읽기"

View의 android:elevation이 안될 때

그림자를 올바로 주었는지, 그림자가 표시될 수 있는지  확인하면 된다. android:elevation 값을 주자. 당연히, 그림자 효과를 위해 얼마나 높게 보일지 정해주어야 한다. android:background 를 지정하자. 배경색을 지정하지 않으면, 그림자가 생기지 않는다. ImageView와 같은 경우 이미지로 인해 background 색이 화면에 표시되지 않는다 하더라도 색을 지정하자. 참고로, 반투명은 가능하지만 투명도가 너무 높으면 그림자가 안보인다. 그림자가 필요한 뷰와 부모

View의 android:elevation이 안될 때 더 읽기"

알듯 말듯한 안드로이드의 컴포넌트들

컴포넌트(Component) 액티비티, 서비스, 브로드캐스트 리시버, 컨텐츠 프로바이더를 안드로이드 4대 컴포넌트라 합니다. 4대 컴포넌트 중 컨텐츠 프로바이더는 인텐트로 실행하지 않습니다. 4대 컴포넌트 중 브로드캐스트 리시버는 AndroidManifest.xml에 등록하지 않고도 사용할 수 있으며, 이를 동적 브로드캐스트 리시버라 부릅니다. 동적 브로드캐스트 리시버는 선택이 아닌 필수로, 동적 브로드캐스트 리시버를 통해서만 수신할 수 있는 브로드캐스트가 있습니다. 4대 컴포넌트 중 가장 많이

알듯 말듯한 안드로이드의 컴포넌트들 더 읽기"