Xamarin表单,使用BottomNavigationBar调用OnAppearing两次

时间:2017-06-13 14:22:51

标签: xamarin.forms bottomnavigationview

我使用this library来实现Android中的底部导航栏(而不是旧的tablayout),问题是调用OnAppearing/Disappearing就是这样:

  1. OnAppearing
  2. OnDisappearing
  3. OnAppearing
  4. 我在ViewModel方法中调用我的LoadData() OnAppearing方法(负责从其他API获取数据并填充视图),因为它' s调用两次,应用程序面临性能问题。另外,OnDisappearingOnAppearing之后调用时,我无法使用bool来处理何时调用LoadData()。那么我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:2)

如果你在任何被推入导航堆栈的页面中覆盖OnAppearing(),则在Xamarin.Android中

,无论它是否是当前最可见的视图,该方法将触发。你应该在OnAppearing()中添加一个检查,你的视图位于堆栈顶部,如果不是什么都不做的话。

    protected override void OnAppearing()
    {
        var Page = Navigation.NavigationStack.Last();

        if (Page.GetType() == typeof(NAMEOFPAGECLASSYOURON))
        {
           // Do what you want to do only if your on this page.
        }
    }

答案 1 :(得分:0)

不确定为什么它会被调用两次,但你可以使用这个技巧。在类变量中存储OnAppearing的时间戳。当OnAppearing被调用时,检查上次调用的时间以及时间(假设)是否小于10秒不进行任何操作