Có cách nào để cải thiện tốc độ tải tệp .html
cục bộ vào một WebView
. Các tệp .html
được lưu trữ trong Thư mục /assets
.Android: WebView cải thiện tốc độ tải của các tệp html cục bộ
Như bạn có thể thấy trong đoạn video (Xin lỗi, liên kết bị phá vỡ!), TextView
(beackground đỏ) được trả lại trước khi transistion khởi động, trong khi các văn bản trong WebView
được hiển thị sau đó. Làm thế nào tôi có thể đạt được để tải WebView
nhanh như TextView?
//current implementation
webView.setInitialScale(1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.loadUrl("file:///android_asset/disclaimer.html");
TÓM TẮT
Đó là điều không thể. Tôi đã thử tất cả các bình luận ở đây và nó không tạo ra sự khác biệt.
Lý do tôi hỏi là chúng tôi đã có một ứng dụng cho iOS và Android, chủ yếu bao gồm đơn giản TextViews
và Images
. Vì vậy, chúng tôi đã có ý tưởng tạo các tệp cục bộhtml
mà chúng tôi có thể sử dụng trong cả hai ứng dụng. Trong iOS
, nó hoạt động như một sự quyến rũ, nhưng trong Android
chúng tôi không thể thoát khỏi thời gian tải, vì vậy tôi luôn có một màn hình trống và sau 100-200ms nội dung xuất hiện.
Tôi đoán Androids WebView
bắt đầu hiển thị nếu Hoạt động hiển thị. Điều này hoàn toàn có ý nghĩa trong chế độ trực tuyến, bởi vì bạn không muốn tải một số trang html mà người dùng mở trong một lần nhấn mới trong nền, trước khi thực sự tập trung chúng. Tuy nhiên, ở chế độ ngoại tuyến (tệp html cục bộ được lưu trữ trong ứng dụng assets
) hành vi này là không cần thiết, nhưng bạn không thể thay đổi nó.
Bây giờ chúng tôi thực sự bây giờ lý do tại sao phonegap & đồng hút.
Chỉ để lưu nội dung: Cuối cùng, tôi đã sử dụng hoạt động có vùng chứa trống rỗng LinearLayout
, nơi bạn có thể chèn nội dung theo chương trình. Mỗi phong cách (dòng tiêu đề 1, tiêu đề 2, nội dung ...) có một mình bố trí tập tin xml
public void insertHeadline(int id){
String text = getString(id);
TextView headline = (TextView) inflater.inflate(R.layout.layout_text_headline, null, false);
headline.setText(text);
//add this TextView to the empty container
myLinearLayoutContainerView.addView(headline);
}
Bạn có thể đăng cách sao chép nội dung ở nơi khác không? – soommy12