Decoding android core threading concepts on Thread, Runnable, Handler, Looper, MessageQueue, HandlerThreadπ§΅
πππππππ π§Ά πππ ππππ ππ πππππππ ππππππππππ πππππ ππ πππππππ. π° ππππππππππ ππππ πππ ππ πππ’πππππ ππππ π ππππππ πππππππππππ ππ π ππππ-πππππππππ πππππππππ.
Table of contents
- ππππππ ππππ ππ πππππππ ππππ ππ πππ πππππππ
- π΅πππππππππππ ππ πππππππππ
- πππππππππ ππ πππππππ
- πΆππππππ ππππππππ π πππ πππππππππππππ πππππππ-πππππ, πππππππ, ππππππ
- πππ’ ππ π π ππππ πππππππ πππππππ ππ ππππππ πππππππππ ππ πππππππ
- π·ππππππ
- πΌππππππ πππππ
- π»πππππ
- πππππππ’ π·ππππππ+π»πππππ+πΌπππππππππππ+πΌππππππ
- πππππππππ ππ‘πππππ ππ’ ππ‘πππππππ πππ ππππππ πππππ
- πππππππππ ππ‘πππππ ππ’ ππππππππππππ ππππππππ
- π³πππππππππ ππππ πππ ππ‘πππππππ πππ ππππππ πππππ πππ ππππππππππππ πππ ππππππππ πππππππππ
- π·ππππππ ππππππππππππππ π πππ ππ‘πππππ
- π·ππππππππππππ ππππππππππππππ π πππ ππ‘πππππ
- π³πππππππππ ππππ πππ πππππππ πππ πππππππ-ππππππ
π οΈThe Source code of samples used in the project can be found here
ποΈ Fundamentals of Threading
- π±πππ πππππ: ππππ ππ ππππ ππππππ π πππ πππππ, π°π ππππ ππππ πππ ππππππ ππππππ ππ πππππππ πππ ππ ππ πππ πππππ.
- πππππ’ πππππ: ππππ π π ππππ πππππ() πππ ππππππ ππππππ ππππ πππ ππππ πππππ ππ πππ πππππ’ πππππ. π·πππ ππ πππππ ππ πππ πππππππππππππππ’ ππ ππππ ππ πππ ππππππ ππππ πππππππππ ππ πππ ππππππ πππππππππ ππππππππππππππ.
- πππππππ πππππ: πππ πππππππππ πππππ πππ ππ πππ πππππππ ππππ πππ ππππππππ ππππ ππ πππππππ πππ πππππ ππ π πππππππ πππππ. π·πππ πππ πππ ππππππ ππ ππππππ πππ ππππππ ππ‘πππππππ.
- ππππππππ πππππ: π·πππ πππ ππππππ ππ ππ π πππππππ πππππ πππππππ πππ πππππ ππππππ ππ ππππππ ππ π ππππππ πππ πππ ππππππππ.
- ππππππππππ πππππ: ππππ πππ πππ ππππππ ππ πππππππππ πππ ππππππππππ πππππ ππ πππππππ πππ πππ ππππ ππ πππππππππ.
ππ πππππ πππ πππ ππππππ ππππ πππ ππππ ππ’πππ πππππππ πππππ π π ππππππππππ πππ ππππ‘ ππ ππππππ ππππππ’πππ πππππππ
ποΈ Threading in android
πΈπ πππππππ π πππ π’ππ πππππ ππ πππ π πππππππ ππ πππππππ πππ π ππππππ ππ πππππππππ πππ ππ. ππ ππππ ππ πππ ππππ-ππππππ πππ πππ ππππππππππ ππ ππππ ππππππ ππ ππππ ππ πππ ππππππππππ πππ π πππ ππ πππππ πππππ πππ πππππππ ππ πππ πππ ππ ππππππ. ππ πππππ ππππππππππ ππ ππππππ ππ ππππ πππππππ πππ ππππ πππππππππ.
ποΈ Getting familiar with terminologies message-queue, handler, looper
πππππ πππ πππ πππππππ ππππ πππ πππππππ ππππππ πππ ππ πππππ πππππ ππππ πππ ππππππππ ππ’ πππππππ ππ ππππππ π ππππππ πππ πππ πππππ ππππ πππ ππ ππ.
ποΈ Why do we need special classes to manage threading in android
- ππ ππππ ππππ πππππππ πππ ππππ ππ πππππππ πππ πππππ πππ ππππππ πππ πππ πππππππ ππππππ ππ πππππππππ πππππ πππππ ππππππ πππππ πππ πππππ π ππ ππ πππππππ ππππππππππ πππππ ππππ π π π ππππ ππππ πππππ ππ ππππππππ π πππππ ππππππ ππππ ππππ πππ πππ π πππ πππππππππππ.
- π²ππππππ ππππ π πππππππ, ππππππ, πππ πππππππ-πππππ ππππ ππ ππππππ πππ ππππ ππππππ πππππππππππ’.
ποΈ Handler
- π·ππππππ ππππ π’ππ ππππ πππ πππππππ ππππππππ πππ ππππππππ πππππππ π ππ πππ ππππππππππ π πππ πππ πππππππ πππππ.
- π½πππ ππππ π πππππππ ππ ππππππππππ π πππ ππππ πππ ππππππ.
- ππππ ππππ πππ πππππππ ππ πππ πππππ πππ πππππππππ πππ πππππππ ππππ πππ πππππ.
- ππππ π πππππππ ππ πππππππ ππ ππ πππππ ππ πππ ππππππ πππ πππ πππππππ πππππ ππ ππππ ππππππ.
- ππ π π ππππ ππ πππ πππ πππππππ ππ ππππ πππππππππ ππ ππππ ππππππ ππππ π π ππππ ππ πππ πππ ππππππ ππ ππππ ππππππ.
ποΈ Message Queue
- ππππ ππ π ππππππ πππππ ππ’ππππ ππππ πππππ πππ ππππππππ ππππ ππππππ πππππ ππππ ππππ ππ ππ πππππππππ.
- ππππ πππππ ππ πππππππππππ π ππππ ππ πππππ ππππ πππ πππππππππ, π΅ππ ππ‘πππππ, πππ’ π ππππ ππππππ π·πΆ πππππ ππ πππ ππππππ πππ πππ π·πΆ πππππ πππ πππππ ππ π·πΆ ππππππππ ππ ππππ πππππ ππ’ πππ πππππππ πππ πππππππππ ππ’ πππ πππππππ πππ πππππ πππππππ ππππππππ π ππππ πππππππππ.
ποΈ Looper
- πππ ππππππ ππ ππππ ππ ππππ πππ ππππππ πππππ ππ πππππππ πππ πππ ππππππππ ππππππππππ π πππ π ππππππ.
- π±π’ πππππππ, π ππππππ πππ ππππππ ππππππππππ π πππ ππ.
- ππ ππππ ππ ππππππ π ππππππ ππ’ πππππ π»πππππ. πππππππ(). ππππ ππππππ ππππππππππ πππ πππππππ ππππππ πππ πππππππ π ππππππ πππ πππ πππππππ πππππ πππ ππππ ππππππ.
- ππππ π π ππππ πππ π»πππππ.ππππ(). ππππ ππππππ ππππππππππ πππ ππππππ ππππππππππ π πππ πππ ππππππ πππ πππππ ππ πππππ ππ ππ ππππππππ ππππ.
- πππ ππππππ π πππ ππππ πππππππ ππ ππππππππ πππππ π»πππππ.ππππ() ππ ππππππ π ππππ π πππ πππππ πππ ππππππ ππ ππ‘ππ ππππ πππ ππππππππ ππππ.
Summary Handler+Looper+MessageQueue+Message
- ππππ’ πππ π πππππππ πππππ ππππ πππππππ ππ π ππππππ πππβπ ππππ πππ ππΈ ππππππ ππ πππππππ.
- π° ππππππ ππππππππππ π πππ πππ ππππππ πππππ πππ ππππππ ππππππ.
- πππππ πππ ππ ππππππππ ππππππππ ππππππππππ π πππ πππ ππππππ.
- πππ ππππππππ ππππ πππ ππππππππ ππ πππ πππππππ πππππ.
- πππ ππππππππ ππ πππ πππππ πππ ππππππππ πππ πππππππππ ππ πππ πππππππ π ππππ ππ ππππππππππ π πππ πππ πππππππ ππ πππππππ ππ ππππ.
ποΈ Threading example by extending the Thread class
- π·πππ π π ππ‘ππππ π πππππ ππ’ ππππππ-πππππ πππ ππππ-ππππ πππ πππ ππππππ
- ππ πππππ πππ ππππππ ππ’ ππππππππππ
threadReference.start()
- ππ ππππ ππππ πππ ππππππ ππ’ πππππππ
threadReference.interrupt()
ποΈ Threading example by implementing Runnable
- π·πππ π π ππππππ π
runnables
ππ’ ππππππππππππ πππ ππππππππ πππππππππ - ππππ π π ππππππ π
thread
ππππππππ ππ’ πππππππ πππ ππππππππ ππ πππ πππππππππππ. - π½ππ‘π, π π πππ πππ ππππππ πππππππππ πππ πππππππ
threadReference.start()
- πΈπ πππ
runnable
π π πππππ ππππ-πππππππ πππππ. - ππ ππππ ππππ πππ ππππππ ππ’ πππππππ
threadReference.interrupt()
ποΈ Difference between extending the Thread class and implementing the Runnable interface
ππππ π π ππ‘ππππ πππ ππππππ πππππ, π π πππβπ ππ‘ππππ πππ’ πππππ πππππ ππππ ππ π π πππππππ πππ ππππ π π πππππππππ ππππππππ, π π πππ ππππ πππππ πππ πππ πππππ ππ ππ‘ππππ πππ’ πππππ πππππ ππ πππ ππππππ ππ πππ .
ποΈ Handler implementation with example
- π·ππππππ ππ π πππππππππ ππππ πππππππ ππππππππ ππ ππππ πππ πππππππ πππ πππππππ/ππππππππ πππππππ ππππππππππ π πππ π ππππππβπ πππππππ πππππ.
- ππ ππππ ππππ ππππ πππππ ππ π πππππππ πππππ π ππππ πππ ππππππππ ππ πππππ ππ ππ πππππππππ πππ πππ ππππππ πππππ πππ ππππππ πππππ π ππππ ππ ππ ππππππππππ π πππ.
- πππ ππππ ππ πππ πππππππ ππ ππ πππ πππ πππππππ ππ πππ πππππππ πππππ πππ πππππππ πππ πππππππ ππππ πππ πππππ.
- πππππ πππ πππππ ππ π΅πΈπ΅πΎ(π΅ππππ πΈπ π΅ππππ πΎππ) ππ ππ π π πππ ππππππππ πππππ ππππ πππ πππππ πππ πππ‘π πππ πππππ πππππππ, πππ πππππ πππ πππππππππ ππππ πππ πππππ.
- πΈπ π’ππ πππππ πΉ ππππππππ πππ πππππ πππππππ πππ π ππππ πππ πππππ πππ ππ ππ‘πππππππ πππ πππ πππππ πΉ πππ ππ πππ πππππππ πππππ ππ ππ πππππππ ππ π’ππ πππππππππ πππ ππππππ π ππππ ππ πππππππππ’ πππππππ ππππ’ πππ πππππ ππππππππ ππ πππππππππππ ππ ππππ πππ πππ πππ πππππππππ πΈ π πππ πππππ πππ πππππ ππππ ππππππππππ πππ ππ’ πππ.
ποΈ HandlerThread implementation with example
- π·ππππππ-ππππππ ππ π πππππππ ππ’ππ ππ ππππππ ππππ πππππ π πππ πππ ππ π ππππππ πππ πππππππ πππππ.
- ππππππππ π ππππ/ππππππππ ππ ππππππ ππ π πππππππ πππππ πππ ππππ, πΈπππππππππ’ πππ πππππππ πππππ ππππ ππ πππ ππππ ππ ππ π πππππππ πππππ.
- ππππ πππ ππππππ πππππ πππππππ ππππ πππππππ πππππ πππ πππππ πππ ππππ πππ ππ‘πππππππ.
- ππ ππππ πππππππ ππ ππππππππππ π πππ π ππππππ.
- ππππ π’ππ ππππ ππππππππ ππ πππ πππππππ ππππππ, ππ π πππ ππππππππ’ ππ‘πππππ πππ πππππ πππππππ.
- π·ππππππ-ππππππ ππππ ππππππππ π πππ ππππππππ ππππ ππ‘πππππππ ππππ ππ ππππππ.ππππ() ππ ππππππ ππ πππ ππππππ ππ ππ‘πππππππ.
- πΏπππππππππ ππππππ.ππππ() π πππ ππππ πππ πππ ππππππππ πππ πππ πππ ππππ ππππ πππ πππππππ’ ππ πππππππ.
- πΈπ ππππππππ πππππππ-πππππππ πππ πππππππ, ππππ’ πππ ππ ππππππππ ππ ππππ πππππ.
ποΈ Difference between handler and handler-thread
ππππππ ππππππ πππππππ π ππππ π π ππππππππ’ ππππ ππ π ππππ π»πππππ.πππππππ() πππ π»πππππ.ππππ(), πΈπ πππ πππππππ-ππππππ πππππ ππππππ π πππ ππ πππππππ ππ’ πππππππ.