Ich habe 3 Aktivitäten miteinander verknüpft. Wenn ich auf einen Aspekt der 1. Aktivität klicke, navigiere ich zur zweiten, und beim Klicken auf einen Aspekt der zweiten gehe ich zur dritten. Das Problem ist, dass es viel Zeit kostet und der Bildschirm einfriert. Mein Programm ist zu groß, um die AsyncTask aufzunehmen. Gibt es überhaupt einen Fortschrittsdialog wie "Bitte warten", wenn ich von einer Aktivität zu einer anderen navigiere. Es wird viel benutzerfreundlicher sein als ein nicht reagierender Bildschirm. Und ich meine, bis der Inhalt der neuen Aktivität angezeigt wird.Wie man einen Fortschrittsbalken-Dialog zeigt, unabhängig davon, was im Hintergrund passiert. UI
Antwort
Wenn Sie von Activity1 zu Activity2 bewegen und
- Ihre Anwendung friert auf
Activity1
, dann warum nicht nur ein Overlay auf jederActivity
haben, ein einfachesTextView
mitmatch_parent
auf jeder Seite, und einige Text, ist zunächst aufVisibility.GONE
eingestellt und bevor Sie die nächsteActivity
starten, legen Sie einfach die Sichtbarkeit aufVisibility.VISIBLE
?
Sie die Sichtbarkeit in onStart
-GONE
zurücksetzen zurück (dh, wenn Sie auf Aktivität drücken 2 zurück und onStart
zurück zur Aktivität 1, auf Aktivität 1 ist gekommen legen Sie die Sichtbarkeit zu GONE
)
- Ihre App friert auf
Activity2
ein, dann setzen Sie dieTextView
standardmäßig sichtbar in Ihremxml
und dann setzen Sie die Sichtbarkeit aufGONE
sobald Sie fertig sind, was auch immer es ist, die den Bildschirm einfriert.
Ich empfehle eine einfache Verwendung TextView
anstelle eines ProgressBar
wie Sie, dass die gefriert App gesagt, also, wenn es friert ich bin Vermutung der ProgressBar
selbst nicht animiert werden, so dass keine Verwendung in mit Teilen für diese bewegen.
ist eine gute Idee. aber ich darf es nicht so machen. Dies ist für ein Unternehmen und sie haben strenge Standards für die Anwendung UI .. –
können Sie alles zu einem ViewPager ändern? Verschieben Sie alle Funktionen von den Fragmenten in Aktivitäten? Oder ist das nicht auch "erlaubt"? Es würde das UX/UI überhaupt nicht beeinflussen ... – AndreiBogdan
eine andere Frage ... warum friert es ein? Was machst du, dass es einfriert? Können Sie diesen Code nicht ausführen, nachdem onResume aufgerufen wurde? Oder können Sie Ihre Inhalte in einen anderen Thread verschieben, eine AsyncTask verwenden und mithilfe von onProgressUpdate nur die erforderlichen Daten an den UI-Thread senden? – AndreiBogdan
Deklarieren Sie eine AsyncTask, und zeigen Sie dann einfach ProgressDialog
auf preExecute von AsyncTask an. Machen Sie das zeitaufwändige und das Einfrieren von Anwendungen wie das Abrufen von Daten von Link auf doInBackground. Funktioniert der Post-Link-Abruf in onPostExecute von asyncTask und schließt den `ProgressDialog 'ab. AsyncTask wird auf einem anderen Thread von der Hauptaktivität ausgeführt und daher friert die Anwendung nicht ein.
// ASYNC TASK
class ClassName extends AsyncTask<String, Void, Integer> {
protected void onPreExecute() {
progress = ProgressDialog.show(context, "", "Loading ...",
false, true);
}
@Override
protected Integer doInBackground(String... params) {
// Your Code
}
protected void onPostExecute(Integer result) {
if (progress != null) {
progress.dismiss();
}
}
}
- 1. Protractor interactive (elementExplorer) zeigt Ergebnis unabhängig davon, ob Element
- 2. Wie überprüft man einen Datumsbereich, unabhängig davon, ob es sich um einen vollen Kalendermonat handelt?
- 3. Was passiert bei Activity.finish() mit AsyncTask noch im Hintergrund?
- 4. Was passiert hier im Code?
- 5. Was passiert hier im Computerspeicher?
- 6. Wie bereitet man Anwendungsdaten im Hintergrund auf?
- 7. Wie man ui Elemente oben zeigt Unity
- 8. Holen Sie sich .__ Modul__ der Klasse unabhängig davon, wie importiert
- 9. Wie man einen "Zeilenkopf" im angularen UI-Raster macht
- 10. Ausführen von WebView im Hintergrund
- 11. Java: Wie protokolliert man Tastenanschläge im Hintergrund?
- 12. Wie man JDesktopPane im Hintergrund in JFrame
- 13. Wie erstellt man mehrere Objekte im Hintergrund?
- 14. Wie man einen UWP App Hintergrund komplett
- 15. T-sql Cursor, was passiert im Fehlerfall?
- 16. Wie führe ich einen Timer im Hintergrund?
- 17. Wie arbeiten Delegierte (im Hintergrund)?
- 18. iPhone - spiegeln Ansichten zeigt einen weißen Hintergrund
- 19. Was passiert eigentlich mit CSS im Hochkontrastmodus?
- 20. Einen Job im Hintergrund ausführen
- 21. Was passiert im entarteten Fall der Mehrfachbelegung?
- 22. Wie man große Verarbeitung im Hintergrund ausführt?
- 23. C# Hintergrund-UI-Update
- 24. Wie zeigt GuitarToolkit im Hintergrund ein dauerhaft aktives Banner?
- 25. QT: wie man Linux-Befehlsausgabe im Textbrowser zeigt
- 26. Was passiert, wenn ich einen Zeiger zurückgebe?
- 27. Wie zeigt man einen Funktionsprototyp in Emacs?
- 28. INotifyPropertyChanged: Was passiert hinter der Szene?
- 29. Anrufe im Hintergrund tätigen?
- 30. Xpath: Wie wählt man einen Nachkommen unabhängig von einem Vorfahren?
Nur ein Gedanke ... haben Sie jemals einen 'ViewPager' in Erwägung gezogen und Ihren Code von' Aktivitäten' nach 'Fragmente' verschoben? Auf diese Weise laufen alle 3 in der gleichen Aktivität und machen den Wechsel zwischen ihnen glatt und ohne Verzögerung. – AndreiBogdan
zeigen Sie einfach einen alertDialog am Anfang von 'onCreate' an und verwerfen Sie ihn, wenn Ihre Ansicht vollständig am Ende von' onCreate() '.. geladen wird !! –