解放・破棄処理

Room ライブラリを基準に記載しておりますので、特に断りがない場合 Core ライブラリをご利用いただいている場合は Channel と読み替えてください。

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

Room の管理

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

OK

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

NG

val room = P2PRoom.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 または Channel の退出処理は行うことは必要です。

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

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

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