【Kotlin/Android】use関数の使い方!リソース(Closeable)の管理
この記事からわかること
- Android Studio/Kotlinでuse関数の使い方
- リソース(Closeable)を安全に管理する方法
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
use関数とは?
use関数はリソースの管理を安全に操作するための拡張関数です。ここでいうリソースとはファイル操作やデータベース接続などCloseableを継承したクラスのことです。
例えばファイルへの書き込み処理を行うFileWriterなどは継承元を辿るとCloseableがあることを確認できます。Closeableなクラスを使用する際は役割を終えたタイミングで適切にリソースを解放する必要があります。
use関数を使用しない場合はstreamを取得して操作が終了したらcloseメソッドを呼び出してストリームを閉じます。適切にcloseメソッドが呼ばれない場合リソースリーク(リソースが解放されずに残ってしまう)を引き起こしてしまいます。
try {
// ファイルへの書き込み
val stream = FileWriter(file)
try {
stream.write(text)
} finally {
stream.close()
}
} catch (e: IOException) {
Log.d("Error","保存失敗")
}
use関数の使い方
先ほどの実装をuse関数を使用すると以下のようにスッキリ記述することができます。ラムダ式の引数でstreamを参照でき、ブロックが終了すると自動で閉じられます。これは正常に成功した場合でも例外を吐いた場合でも閉じてくれるのでリソースの解放を意識する必要がなくなります。
try {
// ファイルへの書き込み
FileWriter(file).use { stream -> stream.write(text) }
} catch (e: IOException) {
Log.d("Error","保存失敗")
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。







