- <intent-filter>: action, category, data
- Pending intent, NotificationManager
- Activity lifecycle
- Intent flags/launchMode:standard, singleTop, singleTask, singleInstance
- best practices for Acti.. and Frag..: use Acti.. to manage Frag...
- lifecycle
- Fragment transaction
- IntentService
- startService, bindService
- Knowledge of AsyncTask: its dark sides: lifecycle/view reference
- Looper(message loop)
- Handler(Looper) -> handleMessage(Message…), obtainMessage(…)
- handle message on main thread: new Handler(Looper.getMainLooper()) {handleMessage}
- HandlerThread.getLooper
- Runnable
- View: onDraw
- Layout: onMeasure: setMeasuredDimension, onLayout
- <declare-stylable>, Context. obtainStyledAttributes
- onTouchEvent, onInterceptTouchEvent
- MotionEvent, GestureDetector , OverScroller
- ValueAnimator, ObjectAnimator
- RelativeLayout: evenly spacing, what if children is ImageButton
- Auto complete: AutoCompleteTextView + Loader
- selector: states, fade duration
- shape: round corder, stroke, solid ...
- Animation: <set>, <objectAnimator>, <animator>, AnimationUtils.loadAnimation, View.startAnimation
- dp, dip, px, sp(scale independant, for fonts)
- mdpi : hdpi : xhdpi : xxhdpi : xxxhdpi :: 1 : 1.5 : 2 : 3 : 4
- launcher icon : 48dp on mobile, 512px on Play store
- define style: res/values : <resources> <style name="" parent=“”><item …>…
- apply theme to application : <application android:theme=“”>…
- Select theme based on platform: use resource filters: e.g. values-v21
- Reuse layout with <include>
- use <merge> tag
- in favor of RelativeLayout vs LinearLayout
- Avoid deep hierarchy
- Smooth Scrolling: use ViewHolder, use background thread
- StrictMode
- ANR: how to avoid
- Unit tests: Robolectric
- UI tests: Robotium
- Http client: OKhttp
- EventBus
- Realm
- Retrofit for JSON
- Gson: TypeAdapter
- 65K limitation
- Crash report: fabric...
- Projects, github, stackoverflow
- How to implement a Activity/Fragment open-splitting/swipe-back transition animation.