---
lang: ja
path: user-guide/android-sdk/release-and-dispose
labels: ユーザーガイド/Android SDK/解放・破棄処理
metaTitle: 解放・破棄処理 ｜ Android SDK ｜ ユーザーガイド ｜ SkyWay（スカイウェイ）
---

# 解放・破棄処理

リソースとは、SDK で生成される全てのインスタンスおよびそのメモリを指します。

## Room の管理
Room インスタンスは操作不要な状態になるまでアプリケーションで管理してください。

OK

```kotlin
val room = Room.findOrCreate(name = "room")
// 入室
val memberInit = RoomMember.Init(name = "member001")
val localRoomMember = room?.join(memberInit)
...
// 退出
localRoomMember.leave()
// Roomを含むリソースが不要になった
room.dispose()
room = null
```

NG

```kotlin
val room = Room.findOrCreate(name = "room")
// 入室
val memberInit = RoomMember.Init(name = "member001")
val localRoomMember = room?.join(memberInit)
...
// 破棄
room = null
// 危険: クラッシュする可能性があります
localRoomMember.publish(stream)
```

### Room を閉じた後の挙動
誰かが明示的に Room を閉じたときに Member が入室していた場合、 Publish と Subscribe を中止して退出します。

Room を閉じた後にそこで生成されたリソースの操作はエラーになります。


### SkyWayを終了する
アプリケーションにおいて SkyWay の機能を利用しなくなった場合、`SkyWayContext.dispose()` をコールすることで SkyWay サーバーとの通信を切断し、SDK で管理している全てのリソースを破棄します。

事前に、Member の Room 退出処理を行ってください。

また、`SkyWayContext.dispose()` をコールした後、それまで生成したリソース(インスタンス)にアクセスしないでください。

アクセスした場合の挙動は未定義でアプリケーションがクラッシュする可能性があります。

`dispose()` 後に再度 `setup(context, option)` することで再度 SkyWay サーバーと接続できます。
