【Kotlin/Android】use関数の使い方!リソース(Closeable)の管理

【Kotlin/Android】use関数の使い方!リソース(Closeable)の管理

この記事からわかること

  • Android Studio/Kotlinuse関数使い方
  • リソース(Closeable)を安全管理する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

公式リファレンス:use関数

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","保存失敗")
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index