2011-12-14 14 views
13

Có cách nào để thực hiện việc này không?Có cách nào để làm mới ứng dụng điện thoại của bạn - ví dụ: xây dựng trang và bắt đầu chạy các tập lệnh ngay từ đầu?

Ví dụ: nếu người dùng khởi động ứng dụng không có kết nối internet, không thể tải tập lệnh từ xa và ứng dụng về cơ bản không thể chạy và tôi hiển thị trang "Không có internet". Nhưng nếu người dùng nhận được internet sau và ứng dụng vẫn đang chạy, có cách nào để chỉ "khởi động lại" không?

Trả lời

16

thế nào về -

document.location = "index.html" 

ứng dụng PhoneGap cũng giống như một trang web nhúng - bạn sẽ có thể đi đến bất kỳ siêu liên kết mà bạn muốn (nhớ những danh sách cho phép).

Tất nhiên, nếu bạn cũng muốn phát hiện khi lại trực tuyến, bạn nên sử dụng API mạng PhoneGap để liên kết với các sự kiện trực tuyến/ngoại tuyến đó.

Suy nghĩ chung, bạn đã bao giờ nghĩ đến việc sử dụng chức năng biểu hiện HTML5 để thực sự cho phép ứng dụng PhoneGap cục bộ của bạn lưu trong bộ nhớ cache các tập lệnh từ xa đó? Bằng cách đó, ứng dụng của bạn vẫn có thể chạy, ngay cả khi ngoại tuyến (trừ khi nó cần dữ liệu từ xa để "làm việc của bạn") ...

Hy vọng điều này sẽ hữu ích!

+0

cực kỳ hữu ích, cảm ơn. tôi đã không được coi là bộ nhớ đệm các kịch bản - sẽ làm việc với các bản đồ google api bạn có nghĩ? –

+0

vấn đề chính này rõ ràng cho tôi là lỗi thời gian chờ javascript. tôi biết đã có nhiều cuộc tranh luận, nhưng rõ ràng là uiwebview không có nitro và đơn giản là không thể thực thi javascript như safari di động. ứng dụng jqm của tôi hoạt động hoàn hảo trên safari di động nhưng vẫn gặp sự cố trong uiwebview - nhưng kể từ khi phonegap không bao giờ thực sự "khởi động lại" và lỗi javascript không khiến ứng dụng thực sự bị lỗi, nó sẽ trở nên không phản hồi. document.location thực hiện thủ thuật để sửa chữa mọi thứ. –

+0

điều này có thể không thành công nếu bạn sử dụng định tuyến url html5 cho ứng dụng của mình (vì index.html có thể không còn tương đối nữa). Để xem xét việc sử dụng điều này: http://stackoverflow.com/a/37837475/82609 –

1

Cố gắng làm việc

navigator.app.loadUrl("file:///android_asset/www/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000}); 
+0

Chỉ hoạt động cho Android. Đường dẫn tệp có thể thay đổi. –

0

giải pháp chấp nhận điều này, nhưng có thể thất bại nếu bạn có một SPA với html5 url định tuyến.

Dưới đây là một giải pháp an toàn nhất:

// keep startup url (in case your app is an SPA with html5 url routing) 
var initialHref = window.location.href; 

function restartApplication() { 
    // Show splash screen (useful if your app takes time to load) 
    navigator.splashscreen.show(); 
    // Reload original app url (ie your index.html file) 
    window.location = initialHref; 
} 
Các vấn đề liên quan