読者です 読者をやめる 読者になる 読者になる

夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Android

昨日のHandlerの存在を受けて、
Androidでのアプリ実行中のブレークに引っ掛かるスレッドと、
その時点でのスレッド一覧を確認してみました。

とりあえず、確認したのは下記の○パターン。
1.onCreateでActivityを初期化している時
2.画面上のボタンにListenerを設定して、Listenerから処理を実行している時
3.TimerからHandlerを経由してTaskを実行している時
4.TimerからTask実行時、Handlerに処理を委譲する前の時

結果としては、1、2、3はmainスレッドでの実行。
4だけ自前で作ったスレッド上での実行となっていました。

なーるほど。確かにmainに委譲されて実行されている。
で、Lisnenerから呼び出される処理についても、
待ち受け処理からHandler経由でmainに委譲されているのかな。

この辺りも調べてみると面白そうではありました。とまぁ、今日はここまで。

確認結果詳細は続きに。



確認結果は下記の通り。

1.onCreateでActivityを初期化している時
スレッド一覧:
main
Binder Thread #1
Binfer Thread #2
ブレークに引っ掛かったスレッド:
main

2.画面上のボタンにListenerを設定して、Listenerから処理を実行している時
スレッド一覧:
main
Binder Thread #1
Binfer Thread #2
Timer-0(Serviceの中で生成して保持しているTimer)
ブレークに引っ掛かったスレッド:
main

3.TimerからHandlerを経由してTaskを実行している時
スレッド一覧:
main
Binder Thread #1
Binfer Thread #2
Timer-0(Serviceの中で生成して保持しているTimer)
ブレークに引っ掛かったスレッド:
main


4.TimerからTask実行時、Handlerに処理を委譲する前の時(つまりは3に委譲する直前)
スレッド一覧:
main
Binder Thread #1
Binfer Thread #2
Timer-0(Serviceの中で生成して保持しているTimer)
ブレークに引っ掛かったスレッド:
Timer-0