amay077 / XamarinAndroid_RxSample

Xamarin.Android で Reactive Extensions を使うサンプルです。
4 stars 0 forks source link

[質問] #1

Closed ozw-sei closed 3 years ago

ozw-sei commented 6 years ago

該当箇所のSubscribeのDisposeをしないとメモリリークすると思うのですが、Xamarin Android/ iOS ではその辺の管理を吸収してくれるのでしょうか。

https://github.com/amay077/XamarinAndroid_RxSample/blob/ada92c492de610019a87a04afff8224d71ef9322/XamarinAndroidRxSample/MainActivity.cs#L35

amay077 commented 6 years ago

コメントありがとうございます。

言われるとおり、 Subscribe で得られた Disposable の Dispose を呼ばないと、メモリリークする場合が多いですね、特に Xamarin だからといって特別な何かはありません。

この例だと購読する Observable はその場で作ってるので問題ないですが、 Activity より生存期間の長いオブジェクトを購読して、Dispose を忘れると Activity が解放されなくなってしまいますね。

またこの記事自体は、Rx の導入に関しては数年前の古い情報なので、割と最近書いた投稿も参考になるかと思います。 → 2017年冬から始める ReactiveProperty + Xamarin.Forms http://blog.amay077.net/blog/2017/11/22/getting_started_reactiveproperty_with_xamarin_forms_in_winter_2017/

amay077 commented 6 years ago

データバインディングを使うと、購読の開始と破棄はデータバインディングの機構側に任せられるので、dispose 忘れを心配する必要はなくなりますね。