Chủ Nhật, 10 tháng 11, 2013

Một số phương thức load data khi khởi tạo ứng dụng

Nguồn tin: Walking Alone

Lập trình ứng dụng cho Windows Phone, bắt buộc phải load data và hiển thị chúng lên giao diện.


Vậy cách nào là tối ưu để load data?


load data method windows phone Một số phương thức load data khi khởi tạo ứng dụng


Khi tạo mới một page trong Windows Phone, bạn có 1 số phương thức được khởi tạo sẵn


10619173056 305079cfe7 o Một số phương thức load data khi khởi tạo ứng dụng


Đây là phương thức khởi tạo (Contructor)

Phương thức khởi tạo có chức năng chính là…construct, hay xây dựng, thi công nên trang mà mình mong muốn.

Một sai lầm cơ bản là mọi người thường load dữ liệu ngay dưới phương thức này.


10619462526 9716012411 o Một số phương thức load data khi khởi tạo ứng dụng


Giả sử như data của bạn nhiều, LoadData chạy khá lâu. Lúc đó thì page của bạn sẽ chỉ xuất hiện khi toàn bộ Contructor đã chạy xong. Tức là từ page cũ, bấm sang page này, sẽ có một khoảng thời gian ứng dụng bị “đơ”, đó chính là thời gian cần thiết để chạy phương thức khởi tạo page. Windows Phone ko hoạt động theo kiểu HTML, một khi tất cả đã sẵn sàng trong RAM, nó mới vẽ page đó ra trên màn hình, trong khi HTML là có cái jì là nó vẽ cái đó :3


Rất nhiều người sử dụng cách này, vì trong một số đoạn video và hầu hết các tài liệu chính thức trên MSDN, MS hướng dẫn bạn theo cách này.


Cách 1: this.Loaded event handler


Hoạt động:


Loaded event sẽ được gọi ngay khi vẽ xong giao diện của page lên màn hình (sau khi khởi tạo xong) và khi có một sự thay đổi về giao diện (thêm bớt các element)


Cách dùng:


10619772596 db30767db0 o Một số phương thức load data khi khởi tạo ứng dụng


Ưu điểm


Windows Phone sử dụng cơ chế DataBinding, giao diện sẽ tự động thay đổi khi dữ liệu thay đổi.

Hãy thử tưởng tượng từng item xuất hiện trong list, và bạn có thể tương tác với chúng. Phương pháp này làm được việc đó

Việc khởi tạo page vô cùng nhanh chóng, ứng dụng của bạn sẽ không bị đơ, đảm bảo tương tác với người dùng


Nhược điểm:

Bất kỳ khi nào có một sự thay đổi về giao diện (thêm bớt các element), phương thức này sẽ được gọi lại. Như vậy, ta không thể đảm bảo được rằng trong suốt quá trình tương tác trên page, phương thức này chỉ được gọi 1 lần. Gọi nhiều lần hàm load sẽ dẫn tới những kết cục không mong muốn, chưa kể đến sự hao phí tài nguyên và năng lượng


Giả sử nếu bạn cần thời gian rất lâu để load dữ liệu, mà dữ liệu của bạn chưa được binding trước khi load xong, thì sẽ có 1 hiện tượng là page đã vẽ xong, nhưng nội dung thì vẫn trống trơn. Dù vẫn phản hồi tốt, người dùng sẽ tưởng app lỗi và rate thấp :3


Kết luận:

Nếu page của bạn, bạn chắc chắn không có sự thêm bớt về giao diện, có thể dùng phương thức này.


Một lưu ý nhỏ là hãy binding dữ liệu trước khi tiến hành load dữ liệu lên. Binding lên một Collection không có phần tử hoàn toàn không sao cả. (không phải collection null nhé)

Và nếu dùng phương thức này mà gặp một số lỗi lạ về dữ liệu, hãy nghĩ tới trường hợp event được gọi nhiều lần


Cách 2: OnNavigatedTo


Hoạt động


OnNavigatedTo được gọi khi một page trở thành page active trong frame.

Như vậy có nghĩa là nó sẽ được gọi trước khi event loaded xảy ra.


Thứ tự:

Contructor => OnNavigatedTo => Loaded


Cách dùng:


10620480973 e2599e3065 o Một số phương thức load data khi khởi tạo ứng dụng


Ưu điểm:

OnNavigatedTo có một số tham số liên quan tới việc chuyển page. Bạn có thể dùng các tham số này để xác định các thành phần sẽ hiển thị lên page như thế nào


Nhược điểm:

Page cũ sẽ bị đơ trước khi chuyển


Kết luận:

Chỉ dùng phương thức này khi thời gian đơ là không đáng kể. Nếu bạn load 2 dòng dữ liệu thì okie, còn nếu 20000 dòng thì nên dùng Loaded

Tóm lại:

Tùy và lượng dữ liệu, cũng như thời gian mà bạn sử dụng linh hoạt 1 trong 2 phương pháp




WalkingAlone Đăng ký: Viet Blogs

Nguồn tin

Nguồn Tin Mới