Android: die Wiederverwendung von gleichen Ansicht Objekt aus verschiedenen Aktivitäten (der Fall ist über ad-Banner)
Möchte ich die Wiederverwendung der gleichen view-Objekt (nicht die Klasse anzeigen, oder die xml-Datei, ich meine das Objekt in den Speicher) in verschiedenen Aktivitäten.
Fast hätte ich dies getan. Die Sache ist natürlich der Kontext.
Habe ich versucht mit dem Anwendungskontext. Es fast geklappt, aber dann wenn ich auf die Ansicht " ich bin übertragung zwischen verschiedenen Aktivitäten, und versuchen Sie, starten Sie eine andere Anwendung aus (oder link) es ist abgestürzt. (Ich erinnere mich nicht an die genaue Absturz, aber ich werde Graben, wenn Sie es brauchen).
Habe ich versucht mit einigen Aktivitäten, die ich nicht Verstand lecken einmal, und gibt es da einen Zusammenhang. Es funktionierte eigentlich alles geklappt, bis ich begann, sonderbare Ausnahmen in ViewFlipper.
Meine Frage ist, ist das wiederverwenden wirklich möglich ist, und wie man es stabil? Hast du irgendwelche Erfahrungen mit denen?
Vielen Dank im Voraus,
Dan
- warum brauchen Sie diese? Ansicht gültig ist, der im gegebenen Kontext gültigen Kontext für die Ansicht aktiv ist, wenn Sie erstellen eine neue Aktivität legen Sie neue anzeigen
- Ist es möglich? Sein könnte. Ist es stabil? Sehr wahrscheinlich nicht so leicht zu erreichen. Gibt es einen guten Grund für ein derartiges Ziel in den ersten Platz?
- Ich glaube, ich habe einen guten Grund. Ich spreche über ad-views, die Dritte, und ich will nicht, Sie zu laden, mit jeder neuen Aktivität.
- Es ist gegen die Nutzungsbedingungen zu gewaltsam vermeiden nachladen adviews auf diese Weise. Sie könnten am Ende immer kein Geld mit Ihnen, wenn Sie dies tun. Nachdem Sie es getan haben einige der Forschung in anzeigen ist es besser, Klicks über Ansichten so meine bevorzugte Art der Schaltung von anzeigen ist eine regelmäßige pop-up - (1 Woche), das zeigt eine ad und Anfragen, klicken Sie auf oder klicken Sie auf die Schaltfläche "überspringen" unten. Das gibt viel bessere click-through-raten und so viel mehr Geld.
- Das ist nicht meine situation überhaupt. Und ich Rede nicht von interstitial-anzeigen. Ich spreche über ad-Banner. Ich bin Neuladen anzeigen alle 60 Sekunden. Das ist zumindest meine Absicht. Die Realität ist, dass ich Neuladen der Werbung viel häufiger, aufgrund der sich ändernden Tätigkeiten, und dass Sie die reload-Anzeige wieder. Dies senkt die click-through-rate unter den realen Werten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin ich immer im Hinterkopf, dass Sie sich leisten können zu Leck-1-Aktivität, da dies die einzige Lösung, die ich kenne:
Deklarieren Sie eine statische Sicht, sagen myAdView in Ihrem 1. Aktivität (in die Sie fordern, ad). Jetzt können Sie die Anzeige und entfernen Sie diese myAdView in jeder Aktivität transation. Ofcors Sie zu pflegen haben seperate LinearLayouts für ur-anzeigen in einzelnen Aktivitäten, wo wir das hinzufügen/entfernen der myAdView
zB. Angenommen, Sie gehen von Aktivität A nach B, dann in der onPause entfernen myAdView:
und in B onResume fügen Sie die gleichen (FirstActivity s) myAdView:
Hoffe, das löst dein problem zum Teil.
Warum verwenden nicht Sie Fragmente?
http://developer.android.com/guide/topics/fundamentals/fragments.html
Ich denke, dein use-case ist perfekt für diese.
Ist dies nicht wirklich möglich in der form, die Sie Fragen. Die Ansichten in einer Tätigkeit muss aufgeblasen werden beim laden, kopieren/referenzieren in-memory ist unwahrscheinlich, zu arbeiten, wie Sie es wollen.
Statt, Sie sollten Blick auf Gebäude die Sicht in jeder Aktivität, die Sie brauchen, und übertragen nur die Daten, die Sie brauchen, um zu bevölkern, statt.
Wenn Sie versuchen zu verbessern Sie die performance Ihrer app, die ich empfehlen würde, auf der Suche nach Möglichkeiten zur Vereinfachung Ihrer Sicht, sondern als Verletzung der activity lifecycle.
Update:
Da hast du offenbart die Absicht hinter dieser Frage (abfangen diente anzeigen von einem Drittanbieter-Bibliothek), ich schlage vor, Sie zuerst an das Unternehmen und überprüfen Sie die Nutzungsbedingungen. Wenn Sie es ermöglichen, die Nutzung Ihrer Dienste unter Umgehung der code Anzeigen, dann könnten Sie in der Lage sein, um Sie mit einem lower-level-API für die Darstellung der anzeigen, wie Sie sehen, passen.
Wenn eine solche Verwendung ist nicht gestattet, die Tatsache berücksichtigen, dass Sie möglicherweise blockieren, Ihr Konto (und die Zahlung verweigern), für mis-Nutzung.
Wenn Sie wollen immer noch gehen Sie vor: NICHT hacken auf den Android-UI-patterns um diese Arbeit zu machen. Extrahieren Sie die Anzeige Bilder aus dem third-party-library-server-Seite (d.h. eine einfache gehostete Java-webapp mit cache-Speicher und eine REST-API) und dienen der Werbung auf Ihr Android-app von dieser "man-in-the-middle" - service. Ich brauche sicherlich keine Empfehlung für diese Methode, jedoch.
Ich akzeptieren, Sie sind auf der Suche nach einer vorletzten technische Lösung für deinen Ansatz, aber ich wirklich denke, es ist der Ansatz selbst, dass ist das problem hier. Wenn ich in Ihrer position wäre, würde ich beginnen, suchen andere Ad serving-Lösungen, die besser passen meine Anforderungen, sowie das Kontaktieren der Dritten Partei, um zu sehen, ob ich bezahlen kann, für die individuelle integration. Alles was mit der übertragung von überhöhten Ansichten zwischen Aktivitäten, die zum scheitern verurteilt ist, um die ständige Wartung Probleme, wenn es überhaupt funktioniert.
Ich bin in der gleichen Fall wie Danail. Das Ding ist nicht etwa, um hack de Ad-Anbieter, aber wenn Sie wollen, um ein banner zeigen, durch verschiedene Aktivitäten ist es, eine best practice in der Werbung nicht neu zu laden jedes mal, wenn Sie ändern die Aktivität, weil man nicht mehr Eindrücke auf, damit Sie die CTR (Click-Through-Ratio) verringern. Sie würde lieber reload die banner an der Zeit, die Sie bewerten fix, unabhängig von der Aktivität ändert.
Ich denke, der richtige Weg, dies zu tun wäre, als NeTeInStEiN sagt, die Verwendung von Fragmenten. Sie haben eine einzigartige Aktivität, zusammengesetzt aus verschiedenen Fragmenten. In einem der Fragmente, zum Beispiel an der Unterseite, Sie hätten das banner und Sie würde Last es tatsächlich einmal. Dann auf die größere Fläche auf der Oberseite (sagen wir, wir sind auf einem Mobilteil) Sie würden verschiedene Fragmente, die man in einer Zeit, die entsprechen würde, um Ihre bestehenden Aktivitäten. Wenn Sie normalerweise "ändern" die Aktivität, jetzt würden Sie ändern Sie einfach die "Haupt" - fragment, aber der banner fragment bleiben dort unverändert.
Den Haupt-und GROßEN problem an diesem Ansatz ist, dass Sie brauchen, um design-app auf diese Weise von Anfang an, weil die änderung der app-Modell von mehrere Aktivitäten zu einer Aktivität mit mehreren Fragmenten ist eine ziemlich große code-änderung... :.(
So, ich verstehe, dass für die Umsetzung Kosten, könnte man versuchen zu "tragen" der Blick von einer Aktivität zur anderen. Aber als ich sah, wie in anderen Antworten, es ist wirklich nicht zu empfehlen und ein mühsamer Weg...
Wenn Sie möchten, eine variable für den Einsatz innerhalb mehrerer Aktivitäten dann am besten Praxis für es ist Sie in eine eigene Klasse (kann benannt werden, die als Konstanten oder MyVars) als statische variable und verwenden Sie Sie in jeder Aktivität, die Sie wollen, so wie Konstanten.SavedVar oder MyVars.SavedVar als unten ist das code-Beispiel.
Do not keep long-lived references to a context-activity (a reference to an activity should have the same life cycle as the activity itself)
von developer.android.com/resources/articles/... also Nein, das ist absolut keine best-practice