2018.09.05
【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;
}
}
※コードのインデントがうまくいきません!!!
なぜメモリリークをするのかは、頭のいい人たちが解決してくれると思います。
これでメモリリークはしないはず(だと思う)。
STAFF BLOG
ARCHIVE
アーカイブ
- 2020年
- 2019年
- 2018年