본문 바로가기
[android] MIME Type 을 쉽게 얻어와보자! 안드로이드, MIME Type 을 쉽게 얻어와보자! 파일처리하는 앱을 만들다 보면, 간단하게 하기 위해 Intent 를 날리곤 한다.그런데, 해당 파일을 처리해줄 앱을 찾기 위해서는 type 을 제대로 넣어주어야 한다.그런데 MIME Type 을 수작업으로 다 매핑해주기는 귀찮고, 대부분의 general 한 파일에 대한 mime type 을 쉽게 얻어오는 방법은 없을까? 있다. MimeTypeMap 이라는 class 가 있어서 이렇게 이용하면 된다. MimeTypeMap mimeTypeMape = MimeTypeMap.getSingleton();String mimeType = mimeTypeMape.getMimeTypeFromExtension( ".pdf" ); // mimeType = "applicat.. 2013. 8. 11.
[Java] inner class 에 대한 이야기 자바, inner class 에 대한 이야기. 자바를 사용하다 보면 항상 적게 사용하는 녀석들은 정확히 개념을 못 잡기 마련이다.필자에게는 그런 것 중 하나가 inner class 인데, 사용은 잘 하지만 IDE 에 의존하는 경향도 있기 떄문에 정확히 개념을 잡아본다. inner class Class 안에 정의된 내부 클래스로, 외부 클래스의 자원을 마치 자기 것처럼 사용할 수 있다는 장점이 있다. Inner class 로 정의하지 않은 경우에는 outer class 의 자원을 파라미터로 다 넘겨주어야 하기 떄문에 복잡해질 수 있다. 일반 inner class 는 맴버변수의 level 로 정의된다. 따라서 outer class 의 instance가 있어야 inner class 를 new 를 통해서 만들 .. 2013. 8. 9.
[android] framework 의 service와 broadcast 안드로이드, framework 의 service 와 broadcast 음악앱은 Service 에서 Notification 과 함께하여 음악을 재생한다. 알람시계앱은 AlarmManager 를 이용하여 PendingIntent 로 Broadcast 를 날리고, 그것을 스스로 수신해서 Activity 를 띄운다. 달력앱은 특정 이벤트 알람내용을 알리기 위해 AlarmManager 를 알람시계앱처럼 이용한다. 백그라운드 파일 다운로드는 다운로드가 있을 경우 작동하는 Service. E-mail 앱은 특정 주기마다 새로운 메일을 확인하기 위해 Alarm 을 통해 Service를 실행한다. 구글 앱들은 네트워크 Push 이벤트 수신과 동기화를 위한 Service 를 돌린다. 구글에서 보내주는 앱 관련 Push 도.. 2013. 8. 9.
[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.
[Java] Iterator 와 ListIterator 의 차이점. 자바, Iterator 와 ListIterator 의 차이점. Iterator 와 ListIterator 는 모두 Collection 을 차례대로 접근하는데 사용하는 interface 이다.이 둘에는 차이점이 있는데 Iterator 는 단방향으로 접근만 가능하고, ListIterator 는 양방향으로 접근이 가능하다. iterator, iterator listiterator, iterator listiterator 차이, java iterator, java listiterator, listiterator 2013. 8. 7.
[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.
반응형