▼ローカル変数とメンバ変数の理解
違い➞
スコープ
関数内で宣言されるのがローカル変数
クラスやデータクラス内でで宣言されるのがメンバ変数
特徴➞
ローカル変数は、関数が終わると死ぬ
メンバ変数は、オブジェクトの属性(プロパティ)を表現するのに使われる。オブジェクトが死ぬと一緒に死ぬ。
オブジェクトとは、実体化したデータを表す物。
▼Kotlinにおけるfor文
for(変数 in 範囲、コレクション)で範囲かコレクションの要素文繰り返される(ループ)
▼アクセス修飾子
違い➞データのアクセス可能範囲
目的➞ アクセス修飾子は、情報隠蔽(カプセル化)の原則を実現し、プログラムの安全性と保守性を向上させるのに役立つ。
例➞特にセキュリティやデータの整合性を確保するためにアクセス修飾子が重要です。例えば、ユーザー情報を保持するクラスのメンバ変数をprivateに設定し、外部からの不正なアクセスを防ぐことができます。
▼静的修飾子
特徴➞メンバ変数やメソッドが、特定のオブジェクトのインスタンスではなくクラス自体に属する。
目的➞インスタンスに依存しないため、同じ値や同じ振る舞いを実現させるために使われる。
(インスタンスに関連するデータを持たないようにする)
データの共有、静的修飾子がつくクラスのメンバ変数が更新されたら、そのクラスに属するインスタンスのメンバ変数も更新される。
例➞staticは、変数やメソッドにつく
finalは、定数
静的メンバ変数、メソッドになって、クラスがインスタンス化しなくてもや変数やメソッドを呼び出せる。
Kotlinだとコンパニオンオブジェクトで囲んだ物が、静的になる
▼イテレータ配列への理解
イテレータとは?
➞データコレクション内の要素に順次アクセスする方法。
拡張for文とか
配列は、同じデータ型の要素を連続して格納されたデータ構造。
インデックスを使用して、効率的にアクセス出来る。インデックスは、データ構造内の個々の要素を識別するための、位置情報。
▼プリミティブ型と参照型
違い➞データの保持方法が異なる
プリミティブ型➞変数に値が直接格納される。
int、char、数字と文字(1)、真偽値
参照型➞アドレス、ポインタ、参照が格納されている。
複雑なデータ構造、文字列で使われる。
String、配列、オブジェクト(クラスのインスタンス)とかがある。
特徴➞
プ➞単一のデータ
参照➞複雑なデータ、複数の変数が同じデータを共有できる
▼クラス、インターフェース、抽象クラス
クラス
型、オブジェクトの設計図
属性とメソッドを持っていて、オブジェクトを生成するためのテンプレ
直接のインスタンス化可能
インターフェース
メソッドの抽象的な定義をを
継承した、クラスがメソッ
必ず実装メソッドのみ持っており、属性はな直接のインスタンス化不可
抽象クラス
1部のメソッドが実装されていない
具像と抽象で分かれているけど、
特徴➞オブジェクトの設計図、型である
インターフェースは、クラスの設計図
違い➞直接のインスタンス化ができるか?属性を持てるか
▼例外処理
目的➞プログラムでエラーが起きてもクラッシュせず、続行するための手法
特徴➞エラーで発生する可能性のある所にカッコで囲む
エラーログの生成
エラーメッセージの表示
try(エラーが起きそうなところ)
catch(エラーが起きた時の対応)
Finally(エラーが起きても起きなくても、最終的に行う事)
リソースの解放、データベース接続、リソースリークを防ぐ
プログラムの状態を戻す
▼intent、intentfilter
intent
役割➞アプリケーション内外のコンポーネント間を通信実現するためのデータオブジェクト
特徴➞アクション、データの情報を入れられる。
カテゴリ、コンポーネント情報を入れられる。
コンポーネントとは?
アクティビティ、サービス(バックグラウンドで実行されるコンポーネント)、ブロードキャストレシーバ(ブロードキャストメッセージを受信、応答アクションを起こす)、アクションで起動する
intentfilter
役割➞Androidのマニフェストファイル内で定義されるフィルタリング条件
アプリケーションが受信できるintentの種類を指定する。
アプリケーションがintentを受信した時に、適切なコンポーネントとにルーティングするため
目的➞特定のブロードキャストレシーバやアクティブティが特定のアクションデータをリッスンする
受信し、それを処理するコンポーネントを指定するためのフィルタです。
マニフェストファイルとは?
アプリケーションの情報と設定を格納したXMLファイル
特徴➞アプリケーションのエントリーポイント(メインファイルを指定してる)
アプリケーションが動作するのに必要な情報を提供する。
ルーティングとは?
AndroidアプリケーションにおけるIntentは、データ(通常はアクションや情報)を特定のコンポーネントに送信するためのメカニズム
アクティビティの起動: アクティビティ間で画面遷移を行うために、明示的または暗黙的なインテントを使用します。
明示的なインテントでは、アクティビティのクラス名を指定して特定のアクティビティを起動します。
暗黙的なインテントでは、特定のアクションやカテゴリに合致するアクティビティをシステムが探し出し起動します。
サービスの開始、ブロードキャストの送信
やり方➡️
▼startservice、bindserviceの役割
役割の違い➞
startservice
メソッド
サービスを非同期で開始する。
アクティビティやアプリケーションとは独立して実行する。
バックグラウンドでタスクが実行される。
bindservice
メソッド
サービスに接続して、Activityなどコンポーネントとサービス間の通信をていきよする。
activityとサービスは、双方向通信を確立できます。
特徴➞
特徴:
startService: startService はアクティビティとサービスとの間で直接的な通信を提供しません。サービスがバックグラウンドで実行されるだけで、アクティビティとの接続がないことがあります。
bindService: bindService はアクティビティとサービスの間で双方向通信を確立し、アクティビティはサービス内のメソッドを呼び出し、データを受け取ることができます。
使用例
ss
バックグラウンド(見えないところ)での操作
ファイルのダウンロード
音楽の再生、
bs
サービスを操作する
activityと連携して、音楽を止めたり、再生したりの操作
startService はサービスがバックグラウンドで独立して実行する必要がある場合に使用し、bindService はアクティビティとサービス間で双方向通信が必要な場合に使用します。
service
サービスクラスの中でライフサイクルに関連する、メソッドがいくつかある
🌾使用例が欲しい
▼contentproviderの役割
▼broadcastreceiverの役割
役割➞ブロードキャストメッセージの受信、それに応じたアクションを起こす。(クラス内)
マニフェストで宣言、アクションとフィルターを宣言
ブロードキャストレシーバーを継承したクラスを用意
(ブロードキャストを受信するクラス)
アクションの種類
➞
▼menu、appbar action bar
共通点
UIでの要素
menu
役割
ユーザーにアプリの機能やオプションを提供。
アプリケーション内の操作や設定を行う。
特徴
オーバーレイ(覆い被さる)として表示される。
appbar action bar(同じようなもん)
役割
アプリケーションのロゴやタイトルを表示する。主要なアプリケーションのナビゲーションを担当する。
特徴
アプリケーションで主要なナビゲーション要素
使い方
m
XMLファイルにメニューのレイアウトを用意
メニューの中身はitemで追加
oncreateoptionsmenuでmenuをインフレートする。
onoptionsitemselected
でWhen文の中にitemのアクションを記載
▼dialog alertdialog progressdialog
違い、特徴
alertdialog
ポップアップダイアログ(よく使うやつ)
ボタンを表示して、押したボタンに応じてアクションを起こす。
progressdialog
進捗状況をユーザーに通知するためのダイアログ(プログレスバーがある)
使用例
ad削除確認など
pdバックグラウンドでデータ処理、
ダウンロードの進捗を伝える
alertdialog.Builderを使ってタイトルやメッセージの設定をする
フラグメントで返す場合
dialogfragmentを使って、
oncreatedialogを実装する
▼イベント処理、Click longtap flick
違い➞イベントの種類で、イベント発生時にアクションを起こすためのリスナーを設定する時に用いる
特徴➞
setonClick、longClicklistenerで設定できて
フリックは、ジェスチャーディテクターのonFlyingを使用してフリック時のアクションを決めて
setontouchlistenerで設定
使用例➞
setonClicklistener
setonlongClicklistener(trueで返す)
setontouchlistenerで設定
中身は、ジェスチャーディテクターの
GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() {
override fun onFling(e1: MotionEvent?, e2: MotionEvent?, velocityX: Float, velocityY: Float): Boolean {
}
▼Notificasion
役割➞メッセージやイベントを通知でアプリケーション外でユーザーが情報にアクセスできるようにする。
特徴➞ステータスバーや、通知トレイに表示される。リアルタイムで通知。通知の中身をカスタマイズ可能りユーザーインタラクション。
使用例➞
通知チャンネルを作成する
ID、チャンネル名、重要度の設定を組み込んだ
通知チャンネルの元を用意
通知マネージャーを使って通知チャンネル登録
通知の作成
NotificationCompat.Builder(this, "my_channel_id")
contextとIDを設定して
セットを使ってアイコンや、メッセージを設定
通知の送信
val notificationId = 1 // 通知の一意なID
with(NotificationManagerCompat.from(this)) {
notify(notificationId, notificationBuilder.build())
}
▼toast
役割➞ユーザーに短いメッセージを提示する。
フォームが正常に届いたか、正常に送信されたか?など
特徴➞ ユーザーに簡単な情報を画面に表示するための軽量なメッセージポップアップ
使用例➞
import android.content.Context
import android.widget.Toast
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
contextで画面情報、メッセージ、表示時間を引数にもってる。
▼style
役割➞UI要素の外観をや挙動をカスタマイズして、統一的なデザインにする
特徴➞Styles.xmlでスタイルを定義する。
スタイルの名前を定義して、itemで適用したい外観の設定を記載する。
Viewの中でstyle@、スタイルの名前で指定する。
theme
役割➞アプリケーションの外観やstyleを1元管理するための重要な役割
外観設定(フォント、色、スタイルなど)を提供し、一貫性を維持する
特徴➞マニフェストでthemeは変更出来る。
セットthemeでthemeのセットができる。
// ダークモードが有効かどうかをチェック
val isDarkMode = isDarkModeEnabled()
// テーマを切り替え
if (isDarkMode) {
setTheme(R.style.AppTheme.Dark)
} else {
setTheme(R.style.AppTheme.Light)
}
// アクティビティを再起動
recreate()
使用例➞
外観をダークモードにしたり、
ダークモードにすることでフォントを