본문 바로가기
[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] MultipartEntity 내용 print out 안드로이드, MultipartEntity 내용 print out. 이미지파일을 server 에 업로드하거나 할 때는 아파치 ( Apache ) 의 library 에 있는 MultipartEntity 를 이용하면 편하다. 그런데 가끔가다 MultipartEntity 에 내용이 잘 들어가서 전달되는지 궁금하곤 하다. 이럴때는 다음 코드로 MultipartEntity 내용을 print out 할 수 있다. ByteArrayOutputStream bytes = new ByteArrayOutputStream();try {entity.writeTo( bytes );} catch ( IOException e ) {Log.e( TAG, "MultipartEntity print", e );}Log.e( TAG, "Mul.. 2013. 8. 8.
[android] CharSequence.equlas( CharSeqence ) 이야기 안드로이드, CharSequence.equals( CharSequence ) edittext 의 내용을 비교하기 위해 CharSeqeucne.equals( CharSequence ) 를 했는데,항상 false 를 내뿜는다. ex)edittext1.getText().equals( edittext2.getText() ) // return false always. 이번에는 같은 내용의 string 과 비교했지만 항상 false 를 내뱉는다. ex)edittext1.getText().equals( "Gamza" ) // return false always 같은 reference 를 가르키는 것이 아니라면 항상 false 를 내뱉는다. 그럼 어떻게 비교할까? 1. Charsequence 에 toString 값을 .. 2013. 8. 8.
[android] FragmentPagerAdapter? FragmentStatePagerAdapter 사용도 고려해보자. 안드로이드, FragmentPagerAdapter? FragmentStatePagerAdapter 사용도 고려해보자. FragmentPagerAdpater 나 FragmentStatePagerAdapter 를 사용할 때는 사실 가장 좋은 방법은 getItem() 부분만 잘 구현하고, instantiateItem() 은 건들지 않는 것이 좋다. 만약 건들고 싶다면, ViewPager 가 이 PagerAdapter 들을어떤 방식으로 호출하고, 어떤 루틴을 타는 지 정확히 이해하고 사용하는 것이 좋다. 사실 instantiateItem(), destroyItem(), 그리고 isViewFromObject() 는 이들보다 상위 class 인 PagerAdpater 자체에 정의되어 있는 함수들이다. 그리고 Fra.. 2013. 8. 7.
[android] ContactsContract ( 주소록 ) 사용하기 어렵당. ㅠ [android] ContactsContract ( 주소록 ) 사용하기 어렵당. ㅠ 안드로이드에서 제공하는 주소록 ( ContactsContract ) DB 를 사용하기가 예전처럼 녹녹치가 않다.더 체계와되어 가공이 더 쉽도록 변형된 주소록의 형태로 ContactsContract 가 등장했지만,그만큼 복잡도도 올라가서 이해하는 데 높은 난이도가 요구된다. 하지만 한번 trial and error 등을 통해서 익숙해지면,사용하는데 큰 무리는 또 없을 것으로 예상된다. 안드로이드의 주소록은 ContactsContract 클래스가 base 가 된다.Contacts, RawContacts, Data 이렇게 3개의 주요 Table 을 통해 contact 정보가 관리되는데,각각의 table 은 조금씩 다른 정보를 .. 2013. 8. 6.
[android] BItmapLruCache 구현하기. ( for Volley ) 안드로이드, BitmapLruCache 구현하기. for Volley Volley Tutorial 을 보면 NetworkImageView 를 사용할 떄 ImageCache를 대입하는 부분이 있는데, 아이러니하게도 Volley library 에서는 기본적인 ImageCache 를 제공하지 않는다. 그렇다면 우리가 구현해주어야 한다는 것인데, "그나마 친절하게도" Volley Library 에서 ImageCache 라는 interface 는 제공해준다. 이 녀석을 구현하기만 하면 된다. import android.graphics.Bitmap;import android.support.v4.util.LruCache; import com.android.volley.toolbox.ImageLoader; public.. 2013. 8. 6.
[Java] SparseArray 뭐하는 녀석이야? SparseArray 뭐하는 녀석이야? 쉽게 이야기하면 Integer, Object pair 를 hash 하는 HashMap 요 녀석과 같다고 볼 수 있다.일반적인 List 는 index 가 순차적으로 가지만, SparseArray는 HashMap 의 개념이라 순차적이 아니어도 된다. 그리고, Integer, Object HashMap 에 비해 높은 성능을 보여주는 녀석이다. 참고사이트 : http://developer.android.com/reference/android/util/SparseArray.html Android, HashMap, integer, Key, object, Performance, sparsearray, Value, 성능, 성능 비교, 안드로이드 2013. 8. 6.
[Java] 형 변환에 대한 깊숙한 이야기. 자바, 형 변환에 대한 깊숙한 이야기. 요즘은 Eclipse 를 비롯한 IDE 들이 워낙 잘 되어 있어서, 알아서 에러를 표시해주고 어떻게 고쳐져야 하는지 Suggestion 까지 나와서 잊기 쉬운 간단하면서 당연한 형변환에 대한 이야기를 해본다. 작은 타입의 데이터를 큰 타입의 변수에 할당할 때는 자동 변환된다. 작은 타입과 큰 타입의 예는 int 와 long 의 관계처럼 볼 수 있다.만약 long 타입의 변수가 있는데, 이 변수에 int 값을 넣어주면 자동 형변환이 된다는 이야기이다. int a = 10;long b = a; // OK!! no casting necessary 큰 타입의 데이터를 작은 타입 변수에 할당할 때는 명시적으로 형 변환을 해 주어야 한다. 큰 타입의 데이터릊 작은 타입의 변수.. 2013. 8. 5.
[android] extrernal image file path <-> MediaStore Uri ( conversion ) 안드로이드, external image file path MediaStore Uri ( conversion ) 경우에 따라서 Uri 와 File 을 전환해야 할 경우가 생긴다. external file path >Cursor cursor = getContentResolver().query( Uri.parse"content://media/external/images/media/1" ), null, null, null, null );cursor.moveToNext(); // 예외처리는 생략했습니다. 실제 코드에서는 예외처리를 잘 해주세요.String path = cursor.getString( cursor.getColumnIndex( "_data" ) );Uri uri = Uri.fromFi.. 2013. 8. 5.
반응형