2011-09-08 26 views
10

Trong GUI, khi xem được yêu cầu vẽ lại. Chúng tôi thường làm điều này như sau:Tại sao sử dụng từ "invalidate" để yêu cầu xem lại để được vẽ lại?

View v = View(); 
v.invalidate() 

Tôi không biết rằng thao tác "invalidate()" được đặt tên như vậy. Trong tiếng Anh, "vô hiệu" có nghĩa là làm cho một cái gì đó không hợp lệ. Nhưng "vô hiệu hóa một khung nhìn" trong lập trình GUI có nghĩa là làm cho khung nhìn được vẽ lại. Tôi không phải là người nói tiếng Anh bản địa. Xin vui lòng cho tôi gợi ý. Tks.

+11

Vấn đề là API Android không muốn gọi lại nó() vì điều đó ngụ ý rằng việc vẽ lại sẽ xảy ra ngay lập tức (bên trong chính hàm đó). Trong khi đó bằng cách nói invalitade() bạn biết rằng khung nhìn sẽ được vẽ lại ngay sau khi các thư viện hệ thống của Android đi xung quanh nó. Gọi nó là vô hiệu hóa thay vì vẽ lại là một quy ước đặt tên tốt hơn nhiều vì nó là chính xác hơn liên quan đến những gì các chức năng thực sự đang làm. –

Trả lời

9

Để "làm mất hiệu lực chế độ xem" có nghĩa là mọi dữ liệu có thể đã được rút ra không còn giá trị. Chế độ xem dữ liệu không hợp lệ, do đó, invalidate() để đánh dấu dữ liệu như vậy. Nó ít hơn là chức năng làm cho nó không hợp lệ nhiều như nó đã không hợp lệ, nhưng không ai ngoại trừ người gọi đến invalidate() biết điều đó được nêu ra. Mục đích của hàm này là cho phần còn lại của mã mà dữ liệu lượt xem hiện không hợp lệ.

4

Tính không hợp lệ khác biệt về ngữ nghĩa khi vẽ lại ở chỗ nó thường chỉ đánh dấu một cái gì đó sẽ được vẽ lại sau, thay vì vẽ lại lúc gọi. Ý tưởng là khi một số vùng chồng chéo có thể bị vô hiệu, số lượng vẽ lại sau đó có thể được thực hiện bằng tổng số các vùng không chồng chéo. Tức là, chúng tôi chỉ có thể vẽ lại một lần cho một số lần vô hiệu hóa tiếp theo. Do đó sự khác biệt giữa vẽ lại và vô hiệu hóa tồn tại.

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