2013-04-23 23 views
5

Tôi đã viết một windows 8 ứng dụng cửa hàng (XAML/C#) mà tôi đã chạy trên một bề mặt Microsoft. Ứng dụng về cơ bản là một ứng dụng nhập dữ liệu mà không có bất kỳ nút lưu nào. Quá trình lưu được thực hiện tự động khi nhảy giữa các trang hoặc khi ứng dụng bị tạm ngưng.Lưu dữ liệu khi Windows 8 Ứng dụng Cửa hàng đóng

Tuy nhiên một senario tôi dường như không thể bắt là khi người dùng đóng ứng dụng (khi người dùng vuốt từ trên xuống dưới màn hình).

Vì vậy, tại thời điểm này tôi đăng ký vào App.Current.Suspending và gọi tiết kiệm ở đây:

App.Current.Suspending += Current_Suspending;     

void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e) 
{ 
    Save(); 
} 

Tôi cũng ghi đè lên các phương pháp SaveState và gọi Save ở đây:

protected override void SaveState(Dictionary<string, object> pageState) 
{ 
    Save(); 
    base.SaveState(pageState); 
} 

Nhưng niether các các phương thức được gọi khi ứng dụng được đóng lại.

Không ai biết của một sự kiện được kích hoạt khi ứng dụng đóng?

Cảm ơn

+0

Việc bạn sử dụng từ "đóng cửa" khi nói chuyện với bạn về các ứng dụng bị đình chỉ là một chút bối rối. Bạn có thể xác định xem sự kiện Tạm dừng có thực sự xảy ra hay không, nếu không, thì bạn sẽ không tìm được sự kiện đúng cách. Có vẻ như bài viết này có thể giúp bạn thực hiện điều này theo cách chính xác: http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx –

+1

Sự kiện tạm ngưng kích hoạt khi ứng dụng bị tạm ngưng nhưng khi ứng dụng bị đóng nó không. Khi tôi nói đã đóng, nghĩa là người dùng đang vuốt màn hình từ trên xuống dưới (hoặc nhấn Alt-F4) – Sun

+0

Sự kiện tạm dừng của bạn chỉ xảy ra khi ứng dụng bị tạm ngưng không bị đóng. Bạn cần phải xử lý các ứng dụng thực sự vĩnh viễn đóng cửa bằng cách xử lý các sự kiện xảy ra khi ứng dụng được đóng lại. –

Trả lời

6

http://msdn.microsoft.com/en-US/library/windows/apps/xaml/hh465115.aspx

Ở phía dưới nó có chứa các ghi chú sau:

Một lưu ý về gỡ lỗi sử dụng Visual Studio: Visual Studio ngăn chặn Windows từ đình chỉ một ứng dụng mà được gắn vào debugger . Điều này cho phép người dùng xem giao diện người dùng gỡ lỗi Visual Studio trong khi ứng dụng đang chạy. Khi bạn đang gỡ lỗi một ứng dụng, bạn có thể gửi một sự kiện đình chỉ bằng cách sử dụng Visual Studio. Đảm bảo thanh công cụ Vị trí gỡ lỗi đang được hiển thị, sau đó nhấp vào biểu tượng Tạm dừng.

2

Tôi ghét đơn giản trỏ tới tài liệu trong vòng đời của Ứng dụng Windows Store nhưng tài liệu khá rõ ràng. Không có sự kiện đặc biệt nào xử lý khi ứng dụng được đóng bằng cách nhấn ALT-F4 Windows Store Applications được cho là chỉ bị treo hoặc đơn giản là không chạy. Điều này có nghĩa là bạn nên xử lý lưu dữ liệu của người dùng thường xuyên và/hoặc cung cấp một cách để lưu dữ liệu đó.

Không có sự kiện đặc biệt nào để cho biết người dùng đã đóng ứng dụng. Sau khi ứng dụng đã bị người dùng đóng, nó bị tạm ngưng và chấm dứt, vào trạng thái NotRunning trong khoảng 10 giây. Nếu ứng dụng đã đăng ký trình xử lý sự kiện cho Tạm ngừng | tạm dừng sự kiện , nó được gọi khi ứng dụng bị tạm ngưng. Bạn có thể sử dụng trình xử lý sự kiện này để lưu dữ liệu người dùng và ứng dụng có liên quan vào lưu trữ liên tục.

Bạn nên quyết định cách ứng dụng của bạn hoạt động khi ứng dụng được kích hoạt sau khi được đóng bởi người dùng. Nó có thể không tạo sự khác biệt cho bạn cho dù ứng dụng đã bị Windows hoặc người dùng chấm dứt hay không. Nếu ứng dụng của bạn cần phải làm một điều gì đó khác khi người dùng đóng cửa hơn khi được đóng cửa, Windows, trình xử lý sự kiện kích hoạt có thể xác định liệu ứng dụng đã bị người dùng chấm dứt hay bởi Windows. Xem mô tả của ClosedByUser và trạng thái đã kết thúc trong tài liệu cho việc liệt kê ApplicationExecutionState.

Ứng dụng không được tự đóng theo chương trình trừ khi hoàn toàn cần . Ví dụ: nếu ứng dụng phát hiện rò rỉ bộ nhớ, ứng dụng có thể tự đóng để đảm bảo tính bảo mật của dữ liệu cá nhân của người dùng. Khi bạn đóng ứng dụng theo lập trình, Windows coi đây là sự cố ứng dụng.

Source

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