2014-09-30 2 views
0

У меня есть веб-просмотр, принадлежащий классу Activity. Я просматриваю webview через findViewId(). Это хорошо работает. Теперь я хочу, чтобы веб-просмотр сохранялся во всем мире. Поэтому я расширил класс Application. Как я могу получить доступ к webView оттуда. Поскольку класс Application не позволяет findViewId(). WebView определен в файле activity_layout.xml, поэтому я предполагаю, что это относится к любому представлению, а не только к веб-просмотру, который определен таким образом.Как я могу создать представление, принадлежащее глобальному объекту в Android?

<WebView 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:gravity="top" /> 

Причина этого заключается в том, что мне нужно WebView сохраняться даже тогда, когда деятельность уничтожается таким образом, что WebView оленья кожа после обновления OnDestroy деятельности.

спасибо.

ответ

0

Почему вы не используете наследование?

Вы можете создать базовый актив с WebView как собственности.

class BaseActivity Extends Activity{ 

    protected WebView webview; 

    // and so on and so forth 
} 
+0

wouldnt это все еще разрушается OnDestroy()? – glutz

+0

Он будет включен вместе с его деятельностью. –

2

Причина этого заключается в том, что мне нужно WebView сохраняться даже тогда, когда деятельность уничтожается

Это плохая идея. Даже если вы можете сохранить ссылку на WebView после уничтожения родительской активности, это будет недействительным, поскольку объект WebView, который он ссылается, будет уничтожен вместе с Activity. Это хороший пример того, почему глобальные данные не одобряются в объектно-ориентированных языках, таких как Java.

Одним из возможных решений является кэширование веб-страницы и всех ее ресурсов (изображений и т. Д.) В локальной файловой системе. Затем, когда ваша активность перезагружается, вы можете проверить, есть ли кэш и загрузить его с диска, если он существует. Это даст вам значительное увеличение времени отклика.

+0

Как я могу кэшировать ресурсы? разве браузер не делает это автоматически? вы просто говорите об использовании этого: setCacheMode() – glutz

Смежные вопросы