2013-03-28 26 views
5

Tôi có một vấn đề nhỏ với việc lưu trạng thái của tôi cho người dân địa phương. Mọi thứ đều ổn, ngoại trừ tình huống khi ai đó đóng ứng dụng của tôi bằng cách sử dụng alt + f4 và mở ứng dụng trước 10 giây trôi qua (sau khi ứng dụng 10 giây tạm dừng và dữ liệu được lưu). (Công nghệ xaml/C#)Làm thế nào để lưu trạng thái của tôi trong Windows Store App?

Tôi lưu dữ liệu của mình trong sự kiện OnSuspending.

Tôi tải dữ liệu của tôi trong trường hợp OnLaunched như thế này:

if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || 
args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser) 
{ 
    // save data 
} 

Làm thế nào để xử lý tình huống này? Tôi biết tôi có thể tiết kiệm tiểu bang của tôi mỗi khi nó được thay đổi nhưng tôi nghĩ rằng nó không phải là ý tưởng tốt trong ứng dụng của tôi. Cảm ơn bạn đã trợ giúp!

Trả lời

2

Khi bạn đóng và khởi chạy ứng dụng trước khi 10 giây trôi qua một phiên bản khác được tạo và trường hợp trước đó không chạy OnSuspending sự kiện (điều này có nghĩa là các hoạt động không đồng bộ như sự kiện này có thể kết thúc hoặc không bao giờ bắt đầu mà không có cảnh báo chúng tôi). Tôi nghĩ rằng điều này là khó chịu nhưng tại sao người dùng của bạn sẽ làm điều gì đó như vậy? Hầu hết các lần người dùng "khởi động lại" ứng dụng của bạn vì nó bị lỗi hoặc bị kẹt và không thể quay trở lại trang chính. Bạn nên cố gắng ngăn chặn những tình huống đó và suy nghĩ như vậy hiếm khi xảy ra.

Tuy nhiên, điều này cũng có thể xảy ra vì người dùng quên làm điều gì đó và muốn khởi động lại ứng dụng. Để ngăn chặn dữ liệu người dùng bị mất, tôi lưu dữ liệu quan trọng nhất bất cứ khi nào tôi có cơ hội và lưu phần còn lại chỉ có phương thức OnSuspending. Bạn cần phải suy nghĩ về những dữ liệu nào sẽ làm khó chịu người dùng của bạn khi bị mất.

Tôi nghĩ Microsoft nên có cách tiết kiệm trạng thái ứng dụng tốt hơn. Tôi đã tìm kiếm rất nhiều về vấn đề này và không tìm thấy lời giải thích nào cho đến bây giờ tôi sẽ tiếp tục làm những gì tôi đã nói ở trên. Tôi hy vọng câu hỏi này bạn có thể giúp và làm rõ tôi về điều này, theo ý kiến ​​của tôi, trường hợp kỳ lạ.

0
onLaunched : 
    CoreWindow.GetForCurrentThread().Activated += App_Activated; 
and event: 
void App_Activated(CoreWindow sender, WindowActivatedEventArgs args) 
     { 



       if (args.WindowActivationState == CoreWindowActivationState.Deactivated) 
       { 
       //save Data 
       } 
     } 

Khi bạn tải dữ liệu, loại bỏ: if (args.PreviousExecutionState == ApplicationExecutionState.Terminated || args.PreviousExecutionState == ApplicationExecutionState.Closed ByUser) `. Nó hoạt động!

+0

bạn nên giải thích điều này và định dạng mã – letiagoalves

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