본문 바로가기
[Android/안드로이드] Menu 에 대한 고급정보. http://developer.android.com/guide/topics/ui/menus.html - Android 3.0 이상부터는 contextual action mode 라는 것이 생겨서, 선택된 content 에 대한 action 을 조금 다르게 처리해주어야 한다. - Menu 의 종류는 다음과 같이 3개. Option menu ( 3.0 이상부터는 ActionBar 로 ), Context menu, 그리고 Popup menu 가 있다. - Menu xml 구성요소는 이 있다. - android:showAsAction 은 action bar 에서 언제 그리고 어떻게 보여질지를 결정하는 attribute. - menu xml 은 MenuInflater 를 이용하여 inflate. - submenu.. 2012. 5. 25.
[Android/안드로이드] Input Events. http://developer.android.com/guide/topics/ui/ui-events.html - event callback 에서의 return 값은 중요하다. 이 return 값은 "event 를 니가 다 처리했는가?" 에 대한 대답이라고 볼 수 있겠다. 예를 들어 onLongClick() 에서 true 를 return 하면 자신이 처리를 한 것이기 때문에 onClick() 으로 event 가 전달되지 않는다. 하지만 onLongClick() 에서 false 를 return 하면, onClick() 이 다음으로 event 를 받는다. - onTouch() 의 경우는 조금 특별한데, false 를 return 한다는 것은 consume 하지 않을 뿐더러, 추후에 발생하는 event 에 대해 .. 2012. 5. 24.
[Android/안드로이드] XML Layout. http://developer.android.com/guide/topics/ui/declaring-layout.html - View id 는 view tree 내에서는 unique 해야하며, 별개의 view tree 에서는 unique 하지 않아도 된다. 하지만 가능한한 unique 하게 만드는 것이 좋다. - getLeft() 와 getTop() 은 parent 기준 view 위치. - getMeasuredWidth(), getMeasuredHeight() 는 parent 에 대한 자신의 size 를 나타내고, getWidth(), getHeight() 는 실제 사이즈를 나타낸다. - 일반적인 view 에 padding 은 줄 수 있지만, margin 은 주지 못한다. margin 은 viewgroup.. 2012. 5. 24.
[Android/안드로이드] Thread 고급정보. http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html 정리 : http://aroundck.tistory.com/97 - IBinder 를 통해 call 하는 IPC 는 Thread Pool 에 있는 UI Thread 가 아닌 Thread 에서 수행되며, 여러 thread 에서 call 했을 때, multi thread 로 작동한다. 따라서 thread-safe 로 구현해주는 것이 필요하다. - ContentProvider 도 매한가지로 thread-safe 가 필요하다. ( ContentProvider 도 보통 IPC ) 도움이 되셨다면 손가락 꾸욱~ 2012. 5. 23.
[Android/안드로이드] IntentFilter 고급정보. http://developer.android.com/guide/topics/intents/intents-filters.html - Intent 의 setData() 에는 target component 에서 다룰 URI 를 넣어주고, setType() 에는 MIME type 을 넣어준다. setDataAndType() 을 통해 2개를 한번에 설정해줄 수도 있다. - IntentFilter matching 시에 action, data ( both URI and data type ), category 이렇게 3개를 비교한다. - startActivity() 는 명시해주지 않는한 최소한 android.intent.category.DEFAULT 를 가지고 있다. 그래서, implicit intent 를 받고싶은 .. 2012. 5. 23.
[Android/안드로이드] Calendar Provider 기본 정보들. http://developer.android.com/guide/topics/providers/calendar-provider.html - SyncAdapter 는 provider 의 data 를 server 의 data 와 sync 시키는데 쓰인다. 예를 들어 Google Calendar 와 Calendar App 의 data 동기화에 쓰인다. - CalendarProvider 의 Calendars 와 Events 에는 sync adpater 가 쓰기 위한 column 들이 있고 이 녀석들은 함부로 건들면 안된다. - CalendarProvider 를 쓰기 위해서는 다음과 같은 권한들이 필요하다. android.permission.READ_CALENDAR android.permission.WRITE_CA.. 2012. 5. 22.
[Android/안드로이드] Bound Services 고급정보, http://developer.android.com/guide/topics/fundamentals/bound-services.html - Local Binding 을 위해서는 Binder 를 상속하는 class 를 만들고 이 class 의 instance 를 return 해주면 된다. - Global Binding 을 위한 방법은 aidl 외에도 Messenger 를 이용하는 방법도 있다. 이 방법에서 service 는 Handler 를 만들고 다른 종류의 Message object 를 handle 해준다. 그리고 client 에서도 Messenger 를 구현해서 Message 를 받는다. 결국 go and back 이 Message object 다. ( 이녀석은 Parcelable ) Messenger.. 2012. 5. 21.
[Android/안드로이드] Service 고급정보. http://developer.android.com/guide/topics/fundamentals/services.html - Service 는 특별히 명시하지 않는 한 Main Process 의 Main Thread 에서 돌기 때문에 Service 내에서 thread 관리를 해주어야 함. - Service 는 할 일이 끝나면, stopSelf() 나 stopService() 를 통해 종료를 해주어야 한다. ( bind 시에는 고려대상이 아니다. ) - 안드로이드 시스템에 메모리가 부족할 경우, Service 를 죽일 수 있다. 현재 user focus 를 가진 activity 가 이 service 와 연결되어 있다면, 죽을 확률은 현저히 떨어지고, 만약 service 가 run in foreground.. 2012. 5. 21.
[Android/안드로이드] Messenger 를 이용한 IPC.( Service binding ) 다른 process 에서 돌고 있는 service와 통신할 때는 Messenger를 이용하는 방법이 있다. Activity SIde 먼저 Activity에서의 bindService 방법까지는 AIDL 과 같다. 단, ServiceConection class의 onServiceConnected 내용이 바뀌게 된다. 왜냐? 전달되어오는 IBinder 가 Messenser.getBinder() 를 통해 얻어진 객체이기 때문이다. 따라서 Messenser mService = new Messenger( service ); 로 service를 받아와야 한다. Messege를 보낼 때는, Messenger.send( Message ) 를 이용하며, 돌아오는 messege 를 handling 해줄 다른 Messenge.. 2012. 5. 21.
반응형