2015-09-28 19 views
5

Tôi đã gặp rắc rối trong một số ngày để hiểu vấn đề này. Về cơ bản tôi có một số Webview tải một trang web, với trang đầu tiên là thông tin đăng nhập và nội dung sau sau khi đăng nhập.Chế độ xem web không khôi phục trạng thái sau khi bị người dùng giết

Mỗi xác thực người dùng được thực hiện thông qua trang web đó. Vì vậy, không có gì để được lưu trong một ví dụ SharedPreference. Im chỉ sử dụng url trong trường hợp này.

so onTạo sau khi giết ứng dụng của tôi, chế độ xem web không khôi phục trạng thái trước đó trước khi bị giết.

Tôi giả sử nó vì lưu trữ đã đạt đến giá trị rỗng và đang tải lại url sau khi ứng dụng bị giết.

Tôi có cookie phiên và các nội dung khác.

tôi đã tự hỏi nếu ai đó có một số gợi ý.

p.s.Tôi mới sử dụng Android.

Trả lời

5

Như bản thân bạn đã chỉ ra vì trạng thái đã lưu là rỗng, bạn không thể mong đợi onCreate để đưa webview của bạn trở lại trang cuối cùng đã được mở. Có hai điều bạn cần làm:

Đảm bảo rằng trang đăng nhập của bạn, trang đầu tiên của bạn chuyển hướng đến trang nội dung có liên quan khi phát hiện người dùng đã đăng nhập. Vì bạn đã sử dụng cookie này là tầm thường.

Sau đó, vượt qua phương thức onPause để lưu url hiện tại của webView.

@Override 
protected void onPause() { 
    super.onPause(); 
    SharedPreferences prefs = context.getApplicationContext(). 
      getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE); 
    Editor edit = prefs.edit(); 
    edit.put("lastUrl",webView.getUrl()); 
    edit.commit(); // can use edit.apply() but in this case commit is better 
} 

Sau đó, bạn có thể đọc thuộc tính này trên phương pháp onCreate và tải url nếu cần. Nếu sở thích được xác định tải trọng nó, nếu không nạp trang đăng nhập (mà nên chuyển hướng đến trang nội dung đầu tiên nếu đã đăng nhập)

CẬP NHẬT đây là những gì onResume của bạn có thể trông như thế nào. Cũng đã thêm một dòng vào phương thức onPause() ở trên.

@Override 
protected void onResume() { 
    super.onResume(); 
    if(webView != null) { 
     SharedPreferences prefs = context.getApplicationContext(). 
      getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE); 
     String s = prefs.getString("lastUrl",""); 
     if(!s.equals("")) { 
      webView.loadUrl(s); 
     } 
    } 
} 
+0

Cảm ơn bạn rất nhiều vì câu trả lời của bạn! Nó đã làm việc ! –

+0

bạn được chào đón. – e4c5

+0

Mã hoạt động, nhưng nó cũng tải lại WebView mỗi khi bạn chuyển trở lại từ ứng dụng khác hoặc giết và mở lại. Làm thế nào tôi có thể ngăn chặn điều đó? – sidyapa

Các vấn đề liên quan