2011-11-21 18 views
6

私はボタンがアンドロイドでクリックされたときに何が起こるのかを理解しようとしています。だから私は簡単なボタンクリックのためにいくつかのブレークポイントを設定しました。画像は、ボタンをクリックするとどうなるかを示しています。(GUIで生成されたイベントは、GUIの操作、例えばボタンのクリック、テキストの編集などの結果として生成されたイベントです)アンドロイドはGUIイベントをどのように処理しますか?

1-ルーパーです。 loop()アプリケーションまたはOSルーパーのメインループ?

2- ViewRootImpl(ハンドラー).dispatchMessage(メッセージ)はどこにありますか?アプリケーションまたはOS?

3メインルーパーでGUIで生成されたイベントを傍受することはできますか?もしそうなら、どうですか?

4-すべてのGUI生成イベントがViewRootImpl(ハンドラ).handleCallback(Message)で処理されるとは限りませんか?

enter image description here

答えて

2

Looper.loop()は、アプリケーションやOSのルーパーのためのメインループですか?

"OSルーパー"とは何か分かりません。 Looperがプロセス内で実行されます。

ViewRootImpl(ハンドラー).dispatchMessage(メッセージ)はどこにありますか?アプリケーションまたはOS?

この文脈では、「OS」が何であると思いますか。 ViewRootImplは、Dalvikでコンパイルされたクラスで、Dalvik VMにロードされ、そのコードがプロセス内で実行されます。さもなければ、あなたはスタックトレースでそれを見ることができません。

メインルーパーでGUIで生成されたイベントをインターセプトできますか?

ファームウェアを変更して、ViewRootImplなどのさまざまなクラスを自分のコードに置き換えるだけです。

GUIで生成されたすべてのイベントがViewRootImpl(ハンドラ).handleCallback(Message)で処理されるとは限りませんか?

私は確かにその仮定をしません。例えば、すべてのアプリケーションがウィジェットフレームワーク(例えば、ゲーム)を使用するとは限らない。

関連する問題