본문 바로가기
[android] OutOfMemoryError : bitmap size exceeds VM budget 을 해결해보자!!! 안드로이드, OutOfMemoryError : bitmap size exceeds VM budget해결해보자!! OutOfMemoryError: bitmap size exceeds VM budget 해결방법 #1 메니페스트의 applicaation tag 에 android:largeHeap="true" 를 준다.이 경우 원래보다 더 큰 용량의 힙 사이즈를 사용할 수는 있지만,GC 시간이 더 오래 걸리는 등의 문제가 생기기 쉽다.게다가 정확한 heap increase 가 보장되지 않는다. 결국 완벽한 solution 은 되지 못하고, 아주 특수한 상황에 한번씩 엄청난 양의 heap size 가필요할 때만 쓸 수 있는 미봉책정도가 되겠다. OutOfMemoryError: bitmap size exceeds .. 2013. 12. 13.
[android] 메모리 최적화에 대한 추가정보들 android, 메모리 최적화에 대한 추가정보들 Activity 나 Fragment 가 멈출 때 비트맵을 재활용하자. - 보통 Activity의 경우 onStop(), Fragment의 경우 onDestryView() 에서 하는 것이 적당하며, Bitmap 이미지의 recycle 을 호출한다. - Activity 나 Fragment 의 종료시에는 View 에 bind 된 drawable 을 끊어주는 것도 중요하다.Drawable.setCallback( null ); 이는 Drawable 이 View 에 bind 되어 있고, View 는 다시 Context 를 통해 Activity 에게 bind 되어 있다는 의미이다. 이를 통해 메모리 릭의 가능성을 배제할 수 있다. 이미지를 load 할 때 줄여서 읽는다.. 2013. 11. 11.
[android] process 이야기 안드로이드, process 이야기. System 이 process 를 죽였을 경우, 2.2 ( Froyo ) 이전 버전에서는 무조건 새로 시작하였고, 그 이후로는 onCreate + Bundle 로 다시 state 를 복구해준다. Activity 들은 모두 destroy 되고 다시 재생성되는 그런 패턴이다. 메모리가 부족하거나 사용안한지 30분이 지나거나 하는 조건 하에 destroy 된다. 2.2, 30분, activity, Android, Bundle, Destroy, froyo, onCreate, process, process kill, state, state 복구, System, 메모리 부족, 안드로이드, 재생성, 프로세스 2013. 10. 3.
[android] Caused by: java.lang.NullPointerException at android.app.AlertDialog.resolveDialogTheme 안드로이드, Caused by : java.lang.NullPointerException at android.app.AlertDialog.resolveDialogTheme Caused by: java.lang.NullPointerExceptionat android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:148)at android.app.AlertDialog.(AlertDialog.java:104)at android.app.ProgressDialog.(ProgressDialog.java:77) 해당 이슈는 말 그대로 null pointer exception 인데 무엇이 null 이냐?AlertDialog 를 만들 때 전달하는 Context 혹은 Acti.. 2013. 8. 20.
[android] Toast( 토스트 ) 이야기 안드로이드, Toast( 토스트 ) 이야기 Toast 의 특이한 점. Toast 생성은 메인 스레드에서만 가능하지만, show() 함수는 아무 스레드에서나 호출할 수 있다.이는 Toast 가 안에서 handler 를 사용하기 때문이다.생성할 때는 Handler 를 main thread 에서 생성해야 하기 때문에 main thread 에서 생성해야 하고, 그 외 함수들 호출은 아무데서나 해도 된다. Toast 는 독립적인 Window Window 들은 PhoneWindowManagerService 에서 관리한다. status bar, input method, activity 모두 window 이다. Toast 들은 여러 앱에서 동시에 불러도 하나씩 순차적으로 뜨는데, 그 이유는 NotificationMan.. 2013. 8. 14.
[android] Context 관련된 메모리 누수 문제를 피하고 싶다면? 안드로이드, Context 관련된 메모리 누수 문제를 피하고 싶다면? 1. Activity의 Context 참조를 오랫동안 유지하면 안된다. Context 에 대한 참조는 Activity 의 생명주기와 동일해야 한다. 2. Activity Context 대신 Application Context 사용을 고려해야 한다. 3. Activity 내부 클래스의 생명 주기를 잘 관리하는 경우가 아니면, Activity 를 참조하고 있는 내부 클래스를 사용하지 말자. 특히 Static 으로 Context 를 참조하는 object 를 저장하는 것은 아주 위험하다. 대표적인 것은 Drawable. Context 를 참조하는 녀석들은 WeakReference 를 이용하는 것이 좋다. 4. GC는 Memoery Leak 에.. 2013. 8. 9.
[android] Viewpager with fragment problem. 안드로이드, Viewpager with fragment problem. Viewpager 와 fragment 를 동시에 사용할 경우 view redraw 가 잘 안 되는 현상이 발생하기도 한다.필자가 겪었던 문제는 Acitivity 를 사용하다가 Home 키로 나갔을 경우 한참후에 다시 들어오면 ViewPager 안에 있는 Fragment 들만 다시 안 그려지는 현상을 발견했다. ( ViewPager 바깥에 있는 Fragment 들은 잘 그려졌다. ) 구글링 결과 여러가지 솔루션을 제공하는데.. 1. View destroy 안 되게 하기 #1 FragmentPagerAdapter.setOffscreenPageLimit( int retainNumber ) 위의 함수를 통해 Fragment 를 destroy.. 2013. 7. 25.
[android] framework FAQ 안드로이드, framework FAQs 하나의 어플에 포함되어 있는 모든 Activity 와 Service 들이 하나의 프로세스에서 동작해? 메니페스트에 android:process 를 따로 기술하지 않는 한 네개의 기본 Component 들 ( Activity, Service, BroadcastReceiver, ContentProvider ) 는 모두 한 프로세스에서 동작한다. Component 간 Data 공유는 어떻게 해? Primitive type 들은 Intent.putExtra() 를 통해서 내용전달을 할 수 있다. Preference 에 저장하여 공유할수도 있다.Application 클래스에 저장하여 공유한다.public static 변수로 공유한다. 이 방법은 추천되지 않는다.Object .. 2013. 7. 24.
[android] DialogFragment 요 녀석을 아는감? 안드로이드, DialogFragment 요 녀석을 아는감? Activity 의 onCreateDialog 등이 deprecated 된 이유를 찾아보다가 DialogFragment 라는 녀석을 알게 되었다. API 8 부터는 Fragment 의 등장으로, dialog 를 DialogFragment 로 대체"시키"려는 움직임이 강한듯 한다.DialogFragment 를 사용해서, dialog 의 생명주기를 dialog 자체에 함수콜을 하는 형태가 아니라,system 에 어느 정도 맡기고 우회해서 call 하는 형태가 추천된다. 참조 : http://developer.android.com/reference/android/app/DialogFragment.html 기본적인 Dialog 생성 public stat.. 2013. 7. 24.
반응형