0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Android - Java】雰囲気理解ノート

Last updated at Posted at 2025-09-05

Note.png

公式APIリファレンスやサイト、ChatGPTやGeminiの回答をみつつ、なんとなく雰囲気で理解したものを書き留める

📄 Window.Callback

💡こんな感じ

Window.Callback:テレビのリモコンの受信機

  • チャンネルの変更を受信したらチャンネル変更の処理を呼ぶ

の動作を提供するAPI


Activity の Window に差し込む イベントフックのインターフェース

  • Activity:ブラウン管テレビの筐体・制御基盤
    • 電源切替・チャンネル操作等の全体としての動作を制御
  • Window:テレビ画面
    • ガラス面部分でここにViewをうつす
  • View:表示内容
    • Windowに表示される実際の内容
  • イベントフック
    • 餌のようなもの対応するイベントの発生を拾う機能

🛠 メソッド例

  • dispatchKeyEvent(KeyEvent event)
    • キーボード操作のイベントを監視して発火したら設定した所定の処理を呼ぶ

🌐 サイト

📄 ActivityLifecycleCallbacks

💡こんな感じ

Activityの監視者

  • 現在アプリ上で起動(表示)中のActivityを取得・監視する

の動作を提供するAPI

Window.Callback と組み合わせてフックを最上位から仕込んだりする


  • ActivityLifecycleCallbacks

    • 「今どの Activity が前面にあるか」を知る
    • onActivityResumed で「表示中の Activity はこれ」と把握する
    • そのタイミングでWindow.Callbackを差し込むんで監視対象を常に最新のActivityに付け替える
  • Window.Callback

    • 差し込んだ対象Activityのキーイベント/タッチイベントなどをフック
    • この中で各種処理(例:TimeoutManager.reset())を呼ぶ
    • 実処理はそのメソッドに委譲する

🛠 メソッド例

  • onActivityCreated(Activity activity, Bundle savedInstanceState)
    • Activityでsuper.onCreate()が呼ばれたときに呼ばれる
    • onCreateの範囲をActivity全体に拡張したグレードアップ管理版イメージ

🌐 サイト

📄 extends と implements

💡こんな感じ

機能の詳細を知っているかどうかの違い

  • extends:親の持つメソッドを丸ごと受け継ぐ形になるから機能の詳細を知っている
  • implements:実装元がどんなメソッドを持つかしか知らないから機能の詳細を知らない

  • extends

    • 親の方で@Overrideしているからsuper.で親の該当メソッドにアクセスできる
    • 親クラス = 子クラスみたいな関係感
    • 開発者的知識感
  • implements

    • 実装元で@Overrideしていないからsuper.で該当メソッドにアクセスできない
    • 実装元 <-> 契約者みたいな関係感
    • 一般利用者的知識感

🛠 コード例

    // extends
    public class SampleActivity extends AppCompatActivity {
        @Override 
        protected void onCreate(Bundle savedInstanceSteate) {
            super.onCreate(savedInstanceSteate) // 親のメソッドをそのまま使う
        }
    }

    // implements
    public class SampleCallback implements Window.Callback {

        private final Window.Callback windowCallback;

        public SampleCallback(Window.Callback windowCallback) {
            this.windowCallback = windowCallback;
        }
        
        @Override 
        public boolean dispatchKeyEvent(KeyEvent keyEvent) {
            return windowCallback.dispatchKeyEvent(keyEvent) // 実装元に処理委譲
        }
    }

🌐 サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?