Wie zu vermeiden onCreateView () beim Swiping in Tabs

Ich habe eine Anwendung mit einer Aktivität und 3 Swipable Tabs (Fragmente). Ich habe einige schwer erstellte UI-Elemente innerhalb von Tabs, die etwas Zeit zu schaffen und es ist ok für den ersten Lauf, aber die Ansichten sind neu erstellt jedes Mal, wenn ich sie wischen.

Wenn ich eine Registerkarte auswähle, ruft die andere Registerkarte onStop () auf und wenn ich die vorherige Registerkarte erneut auswähle, wird onCreateView () erneut aufgerufen und die Ansicht wird neu verschoben, was verlangsamt und den UI-Thread blockiert.

Was ist der richtige Weg, um Fragmente innerhalb von Tabs zu erstellen, und vermeiden Sie die Wiederherstellung ihrer Ansicht beim Swiping zwischen anderen Registerkarten?

  • Wie bekomme ich das Fragment?
  • Deaktivieren Sie das Swiping zwischen den Registerkarten
  • Der Konstruktor ArrayAdapter kann nicht aufgelöst werden
  • Kann keine Tabs im Fragment von Navigation Dracher Android hinzufügen
  • So senden Sie Daten von Aktivität zu Fragment
  • Android Actionbar Sherlock mit Tabs
  • Wie kann man den Trenner zwischen Eiscreme-Sandwich-Tabs gestalten?
  • Sliding Tab Layout Text ist Großbuchstaben
  • 3 Solutions collect form web for “Wie zu vermeiden onCreateView () beim Swiping in Tabs”

    Um zu addieren, was CommnosWare angegeben hat, wenn Sie einen View-Pager verwenden, können Sie einfach mViewPager.setOffscreenPageLimit(3); aufrufen mViewPager.setOffscreenPageLimit(3); Um alle drei im Gedächtnis zu halten. Aber wenn deine Benutzeroberfläche zu schwer ist, kannst du etwas Jankos bemerken. Versuchen Sie also, Ihren UI-Setup-Code zu überarbeiten.

    Ich habe einige schwer erstellte UI-Elemente innerhalb von Tabs, die einige Zeit in Anspruch nehmen

    Wenn "etwas Zeit" mehr als ~ 5 Millisekunden ist, ist deine App defekt und muss behoben werden. Verwenden Sie Traceview, um genau zu bestimmen, wo Sie Ihre Zeit verbringen, dann reparieren Sie die Angelegenheiten, so dass es weniger Zeit auf dem Hauptanwendungs-Thread benötigt.

    Was ist der richtige Weg, um Fragmente innerhalb von Registerkarten zu erstellen, und vermeiden Sie, ihre Ansicht beim Verschieben zwischen anderen Registerkarten neu zu erstellen?

    AFAIK, FragmentPagerAdapter sollte nicht die Wirkung haben, die du beschreibst (obwohl FragmentStatePagerAdapter wird). Aber auch wenn du dein onCreateView() Performance-Problem beheben kannst, wird auch FragmentStatePagerAdapter kein Problem onCreateView() .

    Fügen Sie einfach den folgenden Code innerhalb der Hauptfragment- / Aktivitätsklasse hinzu, in der TabAdapter deklariert hat.

     viewPager.setOffscreenPageLimit(tabLayout.getTabCount()); 

    Die tabLayout und viewPager wie folgt

     TabLayout tabLayout = (TabLayout) root.findViewById(R.id.tab_layout); ViewPager viewPager = (ViewPager) root.findViewById(R.id.pager); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.