Tôi đã tìm kiếm nhiều chủ đề và vẫn không thể tìm thấy câu trả lời cho câu hỏi của mình. Tôi đang làm việc trên ứng dụng Android
sử dụng WebView
.WebView saveState() có giữ lại các biến Javascript/môi trường không?
tôi sử dụng onSaveInstanceState()
và onRestoreInstanceState()
để lưu trạng thái WebView
như thế này:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
webView.saveState(savedInstanceState);
}
và
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
webView.restoreState(savedInstanceState);
}
Tôi cũng có điều này trong onCreate()
tôi:
public void onCreate(Bundle savedInstanceState) {
... other code ...
if(savedInstanceState != null){
webView.saveState(savedInstanceState);
}else{
webView.loadUrl("http://mypage");
}
}
Vấn đề : Có vẻ như khôi phục lại WebView
không khôi phục lại tất cả các biến số Javascript
biến/môi trường/không gian làm việc. Khi ứng dụng bị giết trong nền và sau đó được khôi phục, toàn bộ Javascript sẽ biến mất với tất cả các đối tượng/biến. Mã javascript có khoảng cách tên, tức là window.utilitiesPack
, window.eventHandlers
, window.automation
, v.v ... và chúng không được xác định. Ngoài ra JQuery
và các plugin javascript khác được sử dụng: tất cả chúng dường như không được xác định sau trạng thái khôi phục. Về cơ bản toàn bộ Javascript không được khôi phục.
Ai đó có thể xác nhận hoặc bác bỏ điều này thực sự là như thế nào (Javascript chưa được lưu)? Nếu toàn bộ không gian làm việc Javascript không được lưu, thì chính xác thì WebView.saveState()
sẽ lưu lại điều gì? Có một số cách dễ dàng/thanh lịch để sử dụng API hiện có để bảo tồn các đối tượng Javascript không?
// ============================================ ==========
Update1: Vì vậy, vấn đề vẫn còn. Khó khăn đáng kể nhất là:
Kết quả là tôi sẽ khởi chạy Camera Intent
. Khi chụp ảnh, ứng dụng sẽ quay lại hoạt động WebView
và được cho là sử dụng Javascript để cập nhật HTML5 LocalStorage
với một số biến dữ liệu.
Hoạt động chính với WebView
bị giết khi hoạt động máy ảnh được hiển thị, vì vậy khi chúng tôi quay lại WebView, không còn Javascript nữa và không có chức năng nào tôi có thể gọi từ mã Android. Điều này xảy ra mỗi lần vào Galaxy S3
. Nó vẫn xảy ra trên các điện thoại khác, nhưng không phải lúc nào cũng chụp ảnh.
Không biết phải làm gì ở đây. Bằng cách nào đó tôi phải thực hiện Hoạt động chính với WebView để giữ trạng thái trong khi hình ảnh đang được chụp với Camera Intent. Có ai có một ý tưởng làm thế nào điều này có thể đạt được?
"Ai đó có thể xác nhận hoặc bác bỏ điều này thực sự là như thế nào" - bạn đã không xác nhận điều này bằng cách thử nó và thấy đó thực sự là những gì sẽ xảy ra? – millimoose
(Tài liệu dường như ngụ ý rằng những gì được lưu là một 'WebBackForwardList'.) – millimoose
" không phải bạn vừa xác nhận điều này bằng cách thử nó và thấy đó thực sự là những gì sẽ xảy ra? " Tôi không thể tin rằng toàn bộ Javascript không được lưu. Tôi hy vọng tôi không hiểu điều gì đó bởi vì nếu đúng như vậy, đây là một hạn chế đối với các ứng dụng sử dụng các trang web có chức năng javascript phức tạp. – user2113581