android

Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com.
2
Antworten

MediaRecorder setVideoSize zeigt ein unterschiedliches Verhalten in verschiedenen Geräten

Ich benutze Media Recorder, um Videos in einer Android-App aufzunehmen. %Vor% Das Problem liegt in der Zeile %Vor% In HTC und Xperia funktioniert setVideoSize gut (funktioniert nur, wenn ich diese Zeile nicht kommentiere). Aber in Nexus...
17.05.2013, 10:04
1
Antwort

Android Wear: Starten eines Dienstes auf dem Handheld

Ich erstelle eine Wear-App, die mit einem WearableListenerService auf dem Handheld kommuniziert. Ich möchte jedoch sicherstellen, dass der Dienst läuft, wenn die App auf der Uhr startet. Mein erster Gedanke war, eine Absicht oder eine Broadca...
30.10.2014, 14:53
1
Antwort

___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ tag123androidfragments ___ Fragmente stellen wiederverwendbares Verhalten oder Teile der Benutzeroberfläche in einer Android-App dar. ___ tag123androidasynctask ___ AsyncTask ermöglicht die ordnungsgemäße und einfache Verwendung des UI-Threads. Mit dieser Klasse können Hintergrundoperationen ausgeführt und Ergebnisse im UI-Thread veröffentlicht werden, ohne dass Threads und / oder Handler manipuliert werden müssen. AsyncTask ist als Hilfsklasse für Thread und Handler konzipiert und stellt kein generisches Threading-Framework dar. AsyncTasks sollten idealerweise für kurze Operationen verwendet werden (höchstens ein paar Sekunden). ___ tag123progressbar ___ Eine Fortschrittsleiste ist eine Komponente in einer grafischen Benutzeroberfläche, die den Fortschritt einer Aufgabe, wie z. B. einen Download oder eine Dateiübertragung, angibt. ___ qstntxt ___

Ich habe dieses Muster ein wenig benutzt. Hier ist ein sehr gelungenes Beispiel für eine AsyncTask + Fortschrittsanzeige:

%Vor%

Es funktioniert gut mit Orientierungsänderungen, aber ich habe festgestellt, dass das Fragment nicht null ist und fragment.getView () null ist, wenn ich das Fragment aus dem Backstack entferne. Das verursacht offensichtlich einen Absturz. Welchen Ansatz verwenden Sie? Ich kann nicht scheinen, eine vollkommene Lösung online zu finden. Wichtiger Hinweis, dies ist in einem Fragment und ich rufe %code% für dieses Fragment in seiner onActivityCreated (...).

auf     
AsyncTask, Fragmente, Ansichten und Backstacks ___ answer26433745 ___

%code% ist eine asynchrone Aufgabe, was bedeutet, dass Sie normalerweise nicht wissen, wann sie abgeschlossen ist und wann sie %code% aufruft. Ich denke, dein Problem ist hier. Wenn Sie Ihr Gerät drehen, ist Ihre asynctask noch nicht beendet und Ihre Fragmentansicht ist zerstört und wird sehr schnell neu erstellt, während sich asynctask auf dem Arbeitsthread befindet und wenn es seine Aufgabe erledigt hat, hat Ihr Fragment eine Sicht und %code% 's Rückgabewert ist nicht %code% . Wenn die Rotationszeit jedoch viel Zeit in Anspruch nimmt, erhalten Sie %code% , weil %code% beendet ist, aber Ihr Fragment keine Sicht hat. Dieses Szenario passiert nun genau mit deinem Backstack. Wenn du dein Fragment auf den Backstack drückst, wird seine Ansicht zerstört (schau ) auf dem Bild ), aber das Fragment selbst ist nicht (das Fragment kehrt vom Backstack zum Layout zurück). Jetzt ist Ihre %code% fertig und rufen Sie Ihre %code% %code% -Methode auf und sie hat keine %code% , so dass Sie %code% erhalten.

Meine Lösung:

Zuerst sollten Sie %code% anstelle von %code% verwenden und in %code% überprüfen, ob es null ist oder nicht, wenn es null ist, nichts tun, weil der Standardwert unsichtbar ist, wenn es nicht null ist Aufruf %code% .

Aktualisierung:

  

Das Fragment ist am Leben, aber die Ansicht wurde freigegeben. Ist das   möglich?

Ja, sehen Sie sich die Abbildung2 vom Link an. Wenn das Fragment aktiv ist (grünes Feld), wird %code% Fragment zu %code% , %code% onDestroyView . Wenn das Fragment dann aus dem Back-Stack herausspringt, geht es direkt zu %code% der Pfeil-Verknüpfung mit diesem Text: %code% .

Um meine Antwort zu bestätigen, können Sie ein %code% erstellen und %code% in Ihrem %code% aufrufen. Jetzt können Sie Ihr Fragment in den Backstack schieben und es aus dem Backstack ohne Ausnahme aufheben, da die asynctask nicht beendet ist und wenn Sie %code% aufrufen, hat Ihr Fragment bereits eine View.

Eine weitere gute Sache, die Sie sehen können, ist setRetainInstance

  

Dies kann nur mit Fragmenten verwendet werden, die sich nicht im Backstack befinden.

Wenn Sie also Ihr Fragment in den Backstack schieben, kann vollständig zerstört werden und Sie erhalten eine neue Fragmentreferenz, wenn sie auftaucht. Wenn Sie jedoch %code% für Konfigurationsänderungen verwenden, wird Ihr Fragment bei der erneuten Erstellung von Aktivitäten beibehalten , dh es ist das gleiche Fragment und %code% wird nicht aufgerufen. Und das ist eine sehr sehr wichtige Sache, denn wenn Sie Ihr %code% bei der Methode %code% starten, wenn Sie Ihr Fragment in den Backstack schieben und es aufklappen, können Sie ein neues Fragment haben und Das bedeutet %code% Methode läuft und ein weiterer %code% wird ausgelöst. Das heißt, Sie haben keine Kontrolle über die Anzahl der Aufrufenden %code% s. Achten Sie also darauf Speicherlecks!

    
___

Ich habe dieses Muster ein wenig benutzt. Hier ist ein sehr gelungenes Beispiel für eine AsyncTask + Fortschrittsanzeige: %Vor% Es funktioniert gut mit Orientierungsänderungen, aber ich habe festgestellt, dass das Fragment nicht null ist und...
17.10.2014, 19:48
1
Antwort

So fügen Sie einen Bildlauf für eine benutzerdefinierte Ansicht in Android hinzu

Ich habe gerade angefangen, eine benutzerdefinierte Ansicht in Android zu schreiben (zum ersten Mal) und ich habe festgestellt, dass ich eine Scroll-Funktion implementieren muss. Die benutzerdefinierte Ansicht verwendet auch eine Kopfzeile, d...
03.09.2016, 14:48
3
Antworten

Gesamtanzahl der "Bereiche / Zonen", in denen ich mich gerade befinde, basierend auf dem aktuellen Standort

Nehmen wir an, wir haben drei Hotels: Hotel A (beliebt in 1 km Umkreis), Hotel B (beliebt in 2 km Umkreis) und Hotel C (beliebt in 4 km Umkreis) . Ein Auto tritt ein und ist an einer bestimmten Position. Diese Hotels (oder jeder an...
08.09.2016, 13:34
2
Antworten

Wie wird AndroidManifest.xml in Android Studio validiert?

Wie überprüft Android Studio AndroidManifest.xml und alle Aktivitäten xml? Ich habe diesen Beitrag und dies und weiß, dass es kein tatsächliches Schema für das Android-Manifest gibt. Aber wie weiß Android Studio oder jedes Tool, das AndroidM...
11.09.2016, 22:51
5
Antworten

Wie werden sowohl MarkerIcon als auch Titel in Google Maps wie Google Apps angezeigt?

Wenn ich in der Google Maps App für Android die nächstgelegenen Restaurants finde, wird der Name des Restaurants neben dem Markersymbol als Standard angezeigt. (Siehe Google Image). Aber in meiner Anwendung muss ich dasselbe tun, wenn ich nac...
03.09.2016, 12:08
2
Antworten

Wie implementiert man Fuzzy-Suche mit SQLite FTS3?

Ich habe bereits integrierte Suche basierend auf der offiziellen Android-Dokumentation und Ich verwende das folgende SQLite-Schema und Abfrage: %Vor% Ich frage mich, wie kann ich es verlängern? um Folgendes zu ermöglichen: Sagen Sie, da...
19.12.2014, 10:36
1
Antwort

Die LG G-Uhr zeigt keine 32-Bit-Bilder oder Farbverläufe mit voller Farbtiefe an

Ich habe gekämpft, um Steigungen glatt auf meiner LG G Watch mit Android 5.0.1 erscheinen zu lassen. Bevor Sie als Duplikat markieren, habe ich jede Antwort für mehrere Beiträge versucht (wie Warum Androiden verlieren Bildqualität bei der An...
30.12.2014, 13:18
4
Antworten

Mobile Webkit Browser (Chrome) Adressleiste ändert $ (window) .height (); Hintergrundgröße erstellen: Abdeckung jedes Mal neu skalieren

Das Problem ist, dass ich ein paar DIV's absolut positioniert habe, die Hintergrundgröße haben: cover; und ihre Höhe wird von Javascript berechnet, um 100% des Ansichtsfensters zu füllen. Auf jedem Desktop-Browser und mobilen Firefox ist alles i...
29.06.2014, 18:42