Was ist der Unterschied, wenn ich ein Android WebView Objekt mit einem ContextWrapper und einem Kontext erstellen?

Problem : Ich möchte eine Web-Seite in einem Android WebView laden und es an eine Aktivität anhängen, wenn die Aktivität bereit ist. Der Triggerpunkt des Ladens der Webseite ist, bevor die eigentliche Aktivität erstellt wird. So schaffe ich ein Webview-Objekt in einem Service wie folgt.

MutableContextWrapper contextWrapper = new MutableContextWrapper(serviceContext.getApplicationContext()); this.webView = new WebView(contextWrapper); 

Wenn die Aktivität, die diese Webview zeigen muss, erstellt wird, schaffe ich einfach ein Framelayout und füge eine Kindansicht hinzu, dh diese Webansicht und setze setContentView an. Auf diese Weise erscheint mein Webview mit der Webseite vorinstalliert. Ich mache auch folgendes

 contextWrapper.setBaseContext(CurrentActivity.this); 

Dies ist das gleiche ContextWrapper-Objekt wie oben angegeben. Auch nach diesem, die Webview nicht zeichnen Javascript Alerts, dass es in der Lage, in den normalen Gebrauch Fall zu zeichnen.

Auch wenn ich es tue

 ContextWrapper contextWrapper = new ContextWrapper(CurrentActivity.this); this.webView = new WebView(contextWrapper); this.webView.loadUrl(someUrl); 

Die WebView ist nicht in der Lage, JS-Alerts aufzurufen. Ich sehe überhaupt keine Ausnahme oder tödliche Tags in den Protokollen. WebView ist nicht in der Lage, irgendwelche Fenster auf sie zu ziehen.

Das funktioniert gut in der normalen Weise bedeutet die Schaffung eines WebView direkt mit der aktuellen Aktivität der Kontext.

 this.webView = new WebView(CurrentActivity.this); this.webView.loadUrl(someUrl); 

Für alle, die ich kenne ein http://developer.android.com/reference/android/content/ContextWrapper.html führt nur die gleichen Operationen auf dem Basis-Kontext es hält, wie es im Konstruktor übergeben.

Mein Anwendungsfall ist so etwas. Ich schaffe ein WebView-Objekt mit einem http://developer.android.com/reference/android/content/MutableContextWrapper.html an sie weitergegeben. Der MutableContextWrapper hält den Kontext einer Aktivität oder kann den Anwendungskontext beibehalten. Wenn die eigentliche Aktivität, die das Webview anzeigen muss, gestartet wird, schalte ich den Kontext innerhalb des MutableContextWrappers um und zeige die Webansicht an, indem ich sie in ein Framelayout und setContentView stecke. Grundsätzlich ist der Auslöser zum Starten der Seite zu laden, bevor die Aktivität erstellt wird und daher möchte ich die Seite in die Webansicht laden und sie einfach an die Aktivität anhängen, wenn sie erstellt wird.

  • Implementierung horizontaler / vertikaler Finger Swipe Scrollen in android Honeycomb webview / webkit?
  • Wie man ein Javascript-Skript in einem Webview vor der HTML-Belastung in Android 7 injizieren
  • WebView zeigt keine Website an, wenn sie offline ist
  • Wie gehe ich den WebView-Cache auf SD?
  • Android Webview App wird nicht zulassen, Video-Player gehen Vollbildschirm
  • WebView füllt nicht den ganzen Bildschirm des Gerätes oder Emulators
  • Flash wird in der Webansicht in Android nicht geladen
  • Öffnen Sie Url in webView in android
  • One Solution collect form web for “Was ist der Unterschied, wenn ich ein Android WebView Objekt mit einem ContextWrapper und einem Kontext erstellen?”

    Es sieht so aus, als ob du die Web-Ansicht aus dem Haupt-UI-Thread (basierend auf der Verwendung von serviceContext )

    Dies ist in der Regel keine gute Idee, da die Web-Ansicht erwartet, dass seine interne Handler an die wichtigsten UI-Thread gebunden werden.

    Es gibt noch andere Themen:

    Ein WebView in einem Thread kann nicht erstellt werden

    Sie sind viel besser dran, die Webansicht zu laden, nachdem die Aktivität geladen wurde (dh in der onCreate Methode) und einfach ein "Lade" onCreate für den Benutzer anzeigen. Sie können das Webview versteckt (mit setVisibility ) haben, bis es die Seite geladen hat, und verwenden Sie einen WebViewClient , um das Ladeereignis zu hören.

    Sobald die Seite geladen ist, setzen Sie die Sichtbarkeit auf Ihre Webansicht auf VISIBLE

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.