[アンドロイド/コートリン]アンドロイドコンポーネント


📌 UI画面を表示するアクティビティ


💜 アクティブ

  • 要素
  • 、ユーザーが閲覧できる
  • Activity_main.レイアウトファイル
  • (xmlなど)

    💜 メインスレッド(UIスレッド)

  • は表示されないが、制御アクティビティの制御センタと同じ(アクティビティの開始/停止)
  • である.
  • メインスレッド駆動アクティブ->アクティブビュー、図
  • 💜 表示

  • 非表示レイアウト要素:
  • 、たとえばスクリーンレイアウト
  • 可視要素:テキストボックス、ボタンなどの部品(Widget)
  • class MainActivity : AppCompatActivity() {  	// 상위의 Activity 클래스로부터 상속
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)  // UI 화면을 나타내는 xml을 해석
        }
    }

    💌 アクティブライフサイクル



    コールバック関数:メインスレッドのコマンドイベントに基づいて呼び出されます.
  • onCreate():アクティビティの作成時に呼び出され、実装する必要があります
    -setOnCreateView():レイアウトペイント画面
  • を指定します.
  • onPause():一時停止します.アプリケーションが他のものによって隠されると
  • が呼び出される.
  • onResume():
  • を再起動
  • onDestoy():[Back]キーを連続的に押し、スタック上のアクティブデバイスをロールバックしない場合は、呼び出し/解放が不足した場合にシステムを強制的に停止します.
    -onSaveInstanceState()/onRestoreInstanceState()上書き:強制クローズ時にステータスを回復する
  • 💌 ライフサイクル


    ドラフト:画面上の小さな単位
  • onAttach():アクティビティに追加の
  • を追加
  • onDetach():
  • を削除
  • onCreateView():プログラムの実行中にUIを構成するビュー
  • を返します.
  • onActivity Created():UIを完全に構成し、残りのアクションコード
  • を構成します.

    💬 latinitの使用

  • コールバック関数の呼び出し時間は不確定であり、特定のUIを使用する場合には
  • が使用される.
    class MainActivity : AppCompatActivity() {
    
    	// 알람 시스템 서비스의 선언
        lateinit var alarmManager: AlarmManager     
    
    	 // 앱의 생명주기 (생성 시 호출되는 콜백 함수)
        override fun onCreate(savedInstanceState: Bundle?) {   
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            alarmManager = getSystemService(AlarmManager::class.java)   // 지연 초기화 시점
        }
    }
  • getSystemservice()は、Androidフレームワーク内のシステムサービスを相互に接続するためのAPIであり、システムサービス中のAlarmManager::classである.
  • javaを指す

    システムサービスとは?

  • ネットワーク、目覚まし時計、ディスプレイ、位置などのサービスは、スマートフォンが起動した後、バックグラウンドで起動します.
  • getSystemService()関数を使用してアプリケーションに接続します.

    💬 lazyの使用

    class MainActivity : AppCompatActivity() {
    
        private val messageView : TextView by lazy { 
            // messageView의 첫 접근에서 초기화
            findViewById(R.id.message_view) ad TextView
        }
        override fun onCreate(savedInstanceState: Bundle?) {    
            super.onCreate(savedInstanceState)
            onSayHello()
        }
        fun onSayHello(){
            messageView.text = "Hello"  // 이 시점에서 초기화됨
        }
    }
  • bylazy{}message viewというリソースへのアクセス時に
  • を実行
  • findView()関数を使用してR.id.message viewを検索し、
  • を初期化します.

    📌 バックグラウンドで続行するサービス

  • サービスは、非表示のバックグラウンドで
  • を実行する.
  • メインスレッド制御
  • アプリケーション(プロセス)内でサービス開始/停止サービス開始/停止
  • を開始する.
  • 中間メディア(Proxy)を介してxxxManagerのサービスとして、Disk Libraryを介してリモートサービスにコマンドを発行
    -必要なデータをParcelで提供
    -bindService()[貼り付け](Paste)/[サービスのバインド解除](UnbindService)/[
  • を使用します.
  • Binder:メッセージを2つのプロセス間で渡す
  • Androidインタフェース定義言語:定義言語
  • 、通信用インタフェースの作成
  • が一度に起動するサービスは、アプリケーションが閉じて他のアプリケーションに移動しても、
  • をバックグラウンドで実行し続けることができる.

    📌 ブロードキャスト受信者

  • Androidからの様々なイベントおよび情報を受信して転送する
  • 📌 コンテンツプロバイダ

  • データの管理または他のアプリケーションへのデータの提供
  • 📌 内部(Intent)

  • は、4つのアンドロイドコンポーネント間でメッセージ
  • を伝達する.
  • 明示テント:特定のカテゴリを指定する
  • 黙示テント:特定のデータに対して実行する動作を指定する
    (複数の関連要素を呼び出すことができる利点)
  • 📌 ハンドラとメッセージキュー


  • アプリケーションを実行すると、プライマリ・スレッドは常にメッセージ・キューとLooperを自動的に生成します.
  • UI要素の更新/変更は、メインスレッドのみで行う