Slide 1

Slide 1 text

JavaͱAndroidͷεϨου ਂ͍͍ษڧձ

Slide 2

Slide 2 text

ͳΜ͔εϨουܥͷ࣮૷͍ͬͺ͍ݟͨ ͜ͱ͋Δͧɻɻɻ

Slide 3

Slide 3 text

ฉ͍ͨ͜ͱͷ͋ΔεϨουؔ࿈Ϋϥε • Handler • HandlerThread • ActivityThread • Runnable • ExecutorService • ThreadPool • AsyncTask • AsyncTaskLoader • RxJava’s Schedulers • RxAndroid’s AndroidSchedulers • Coroutines

Slide 4

Slide 4 text

εϨουΛىಈ͢Δํ๏͸2छྨ͔͠ͳ͍ (JavaϚϧνεϨουϓϩάϥϛϯάॻΑΓ) • ThreadΫϥεͷαϒΫϥεͷΠϯελϯεΛ ࢖ͬͯεϨουΛىಈ͢Δ
 - SubClassThread().start() • RunnableΠϯλʔϑΣʔεͷ࣮૷ΫϥεͷΠ ϯελϯεΛ࢖ͬͯεϨουΛىಈ͢Δ
 - Thread(RunnableImpl()).start()

Slide 5

Slide 5 text

ͭ·Γ࣮࣭̍छྨ͔͠ͳ͍ʁ

Slide 6

Slide 6 text

ThreadΫϥεΛStartͯ͠ Runnable::run͕ݺ͹ΕΔͱ ৽͍͠εϨου͕ىಈ͢Δ

Slide 7

Slide 7 text

ͳΔ΄Ͳɻ

Slide 8

Slide 8 text

ࠓ·Ͱݟ͖ͯͨṖΫϥεͨͪ ͸ཪͰThread().start()͍ͯ͠ Δʹҧ͍ͳ͍

Slide 9

Slide 9 text

• ThreadΫϥε
 - ࠷΋جຊతͳεϨουੜ੒ɾىಈͷΫϥε • RunnableΠϯλʔϑΣʔε
 - εϨου͕࣮ߦ͢Δʮ࢓ࣄʯΛද͢ΠϯλʔϑΣʔε • ThreadFactoryΠϯλʔϑΣʔε
 - εϨουੜ੒Λந৅Խͨ͠ΠϯλʔϑΣʔε • ExecutorΠϯλʔϑΣʔε
 - εϨουͷ࣮ߦΛந৅Խͨ͠ΠϯλʔϑΣʔε • ExecutorServiceΠϯλʔϑΣʔε
 - ࠶ར༻͞ΕΔεϨουͷ࣮ߦΛந৅Խͨ͠ΠϯλʔϑΣʔε • ScheduledExecutorServiceΠϯλʔϑΣʔε
 - εέδϡʔϦϯά͞ΕͨεϨουͷ࣮ߦΛந৅Խͨ͠ΠϯλʔϑΣʔε • ExecutorsΫϥε
 - Πϯελϯεੜ੒ͷϢʔςΟϦςΟΫϥε

Slide 10

Slide 10 text

ThreadPool • WorkerThreadύλʔϯΛ༻͍ͨεϨουॲཧͷ͜ͱΛ BackgroundThreadͱݺͿ͜ͱ΋͋Γ·͢ɻ·ͨɺϫʔ ΧʔεϨουΛͨ͘͞Μอ͍࣋ͯ͠Δ৔ॴͷํʹ஫໨͠ ͯɺThreadPoolͱݺͿ͜ͱ΋͋Γ·͢ɻ • WorkerThreadύλʔϯͱ͸ɺෳ਺ͷεϨουΛ͋Β͔͡ Ί࡞੒ͯ͠଴ػ͓͖ͤͯ͞ɺλεΫ͕དྷͨΒ଴͍ͬͯΔ εϨουʹλεΫΛׂΓ౰ͯͯॲཧΛ։࢝ͤ͞Δ࢓૊Έ

Slide 11

Slide 11 text

Handler • εϨουؒ௨৴ͷͨΊͷ࢓૊ΈɻHandlerΠϯελϯ εΛੜ੒ͨ͠εϨου΁ΠϕϯτΛૹΔͨΊͷ࢓૊Έ • ௒Θ͔Γ΍͍͢
 - http://d.hatena.ne.jp/sankumee/ 20120329/1333021847
 - https://academy.realm.io/jp/posts/android-thread- looper-handler/

Slide 12

Slide 12 text

JavaΫϥεΛAndroidͰ΋࢖͍ ΍͍͢Α͏ʹͨ͠Ϋϥεͨͪ • HandlerThread
 - JavaͷThreadΛΑΓ؆୯ʹѻ͑ΔΑ͏ʹ ϥοϐϯάͨ͠΋ͷ • AsyncTask
 - Thread·ͨ͸Message LoopͳͲͷಈ࡞ݪཧ Λख़஌͍ͯ͠ͳͯ͘΋࢖͑Δ

Slide 13

Slide 13 text

࢓૊ΈΛ஌Βͳ͍ͷʹ࢖͑ͪΌ ͏ͷා͍…

Slide 14

Slide 14 text

RxJava • SchedulersΠϯλʔϑΣʔεͷ͍ͣΕ͔Λࢦఆ͢Δͱɺ SchedulerͷαϒΫϥε͕ͦΕͧΕద༻͞Εɺͦͷ࣮૷ͷ த਎͸nameͱpriorityΛઃఆ͠ɺσʔϞϯεϨουԽ͠ ͨεϨουΛ࡞੒͢Δ࣮૷ʹͳ͍ͬͯͨ • Schedulersͷ߲໨͝ͱʹWorkerThreadΛ͍࣋ͨͤͯͨ ΓɺεϨουΛΩϟογϡͯ͠࠶ར༻͢ΔΑ͏ͳ࣮૷ʹ ͳ͍ͬͯͨΓͨ͠(.io, .single, .computation, .newThread)

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

RxAndroid • AndroidSchedulers.mainThread()͸Handlerʹ MainLooperΛࢦఆͨ͠ΠϯελϯεΛ಺෦ͷΫϥε ʹઃఆ͍ͯ͠Δ • AndroidSchedulers.from(looper: Looper)Λ࢖͑͹ର ৅ͷLooperΛࢦఆͰ͖ΔͷͰɺRx௨৴࣌ʹҟͳΔε ϨουʹΠϕϯτΛૹΔ͜ͱ΋ՄೳΈ͍ͨ(Ϣʔεέʔ ε͋Δʁ)

Slide 17

Slide 17 text

ϥεϘε Coroutines

Slide 18

Slide 18 text

What’s Coroutines • ʮಛఆͷεϨουʹଋറ͞Εͳ͍ɺதஅՄೳ ͳܭࢉॲཧΠϯελϯεʯ • ؔ਺ͷ్தͰதஅͰ͖ͨΓ࠶։ͨ͠ΓͰ͖Δ ΍ͭ
 - http://sys1yagi.hatenablog.com/entry/ 2017/06/13/001408

Slide 19

Slide 19 text

ʰಛఆͷεϨουʹଋറ͞Εͳ͍ʱ
 ˣ
 Coroutines༻ͷεϨουΛ࡞ͬͯΔͬ ͯ͜ͱʁ݁ہεϨουͰͷඇಉظॲ ཧʹ͸มΘΓͳ͍ʁ

Slide 20

Slide 20 text

·͢·͢Θ͔Βͳ͍ɻ https://qiita.com/k-kagurazaka@github/items/ 8595ca60a5c8d31bbe37

Slide 21

Slide 21 text

࣍͸CoroutinesΛษڧ͢Δ(॓୊) • ཪͰ͸εϨουΛىಈ͍ͯ͠Δͷ͔
 - εϨουϓʔϧͷػೳΛ࢖ͬͯ͸͍ΔΒ͍͠ • εϨουΑΓ΋͍ܰͷ͸ͳͥͳͷ͔ • தஅͷ࣮૷ʹഭΔ • CoroutineContextͱ͸

Slide 22

Slide 22 text

·ͱΊ • Handler͸εϨουΛىಈͯ͠ͳ͍ • Handler.postϝιουͷҙຯΛཧղͰ͖ͨ
 - εϨου಺ͷΩϡʔʹ٧·ͬͨॲཧΛऴ͑ͨΒಈ͖ग़͢(Ͳ͜ ͷεϨουͰॲཧ͢Δ͔΋બ΂Δ) • JavaͷεϨουΛཧղ্ͨ͠ͰAndroidʹ࠷దԽ͞ΕͨεϨο υ༻ͷΧελϜΫϥεΛ࢖͏ͱศར • CoroutinesԿऀ

Slide 23

Slide 23 text

Fin.