【Xamarin】NavigationPageでメモリリーク?

おはようございます。こんにちは。こんばんは。

東京のNです。

Xamarinの話しです。C#はいいですなー。

NavigationPageのPushを使ってページを次へ次へと送り、PopToRootで一気も戻るAndroid/iOSアプリを作ったのですが、どうもAndroidがメモリリークを起こしているような気がする。

ググってみたところ、やはりメモリリークを起こしている(気がする)。英語のページばっかり。。。

Push ↔ Pop を1階層程度なら問題はないかと思うのですが、ひたすらPushをし続け、一気にPopToRootで頭に戻ってくるとだめっぽい。

※どうやらNavigationStackに積まれているページをうまく開放できていない???

対応として、

戻りのPop/PopToRootはやめて、Mainページを書き換えちゃう。

Application.Current.MainPage = new Xamarin.Forms.NavigationPage(new HogeHoge());

送りはどうしてもPushを使いたいので、Pushした後に1つ前のページのContentをnullにする。

protected override void OnAppearing()
{
base.OnAppearing();
// 前のページをpopに入れておく
if (pop != null)
{
pop.Content = null;
}
}

※コードのインデントがうまくいきません!!!

なぜメモリリークをするのかは、頭のいい人たちが解決してくれると思います。

これでメモリリークはしないはず(だと思う)。

お問い合わせ