Open1
contextとは!?

context(コンテキスト)って何?
「アプリ全体 or 現在の画面の環境や状態を持っているオブジェクト」
よくある用途まとめ
用途 | 具体例 | 今のコードで出てくるもの |
---|---|---|
ファイルアクセス | キャッシュディレクトリや保存先にアクセス | bitmap.saveAsImage(context) |
リソース読み込み | モデルファイルや画像の読み込み | DigitClassifier(context)(モデル読み込み) |
Toast / Dialog | 画面に表示するUIもcontextが必要 | 今は使ってないけどよく出てく |
OpenCV初期化 | OpenCVの一部関数はContextが必要 | extractDigits(context) で利用される |
もう少しイメージしやすく言うと…
例 contextの役割
「保存して」 → アプリのどこに保存するか分からないと困る(contextが案内役)
「モデルを読み込んで」 → アプリ内のどこにファイルがあるか知ってるのはcontext
「この画面で処理したい」 → contextが「今どの画面か」を知ってる
今のコードでの使われ方
bitmap.saveAsImage(context)
→ 画像を保存するために、ファイルの保存先(=アプリのcacheディレクトリ)を知るために必要
bitmap.extractDigits(context)
→ OpenCV関数の一部がcontextを必要としている(たとえば Utils.bitmapToMat() など)
val classifier = DigitClassifier(context)
→ mnist.tflite モデルファイルを読み込むために
アプリ内のassetsディレクトリにアクセスする必要がある → それを解決するのがcontext!
contextはどこから取るの?
- @Composable の中 → val context = LocalContext.current
- Activity/Fragment の中 → this や requireContext() や applicationContext
- ViewModel では基本的に引数で渡して使う(直接保持しない)