Nền nhanh
Theo mặc định, khi một số thay đổi cấu hình khóa nhất định xảy ra trên Android (một ví dụ phổ biến là thay đổi hướng), Android sẽ khởi động lại hoàn toàn Hoạt động đang chạy để giúp nó điều chỉnh theo các thay đổi đó.
Khi bạn xác định android:configChanges="keyboardHidden|orientation"
trong AndroidManifest, bạn đang nói với Android: "Vui lòng không thực hiện thiết lập lại mặc định khi bàn phím bị kéo ra hoặc điện thoại bị xoay; Tôi muốn tự xử lý việc này. Vâng, tôi biết tôi đang làm gì "
Đây có phải là một điều tốt? Chúng ta sẽ sớm thấy ...
Đừng lo lắng?
Một trong những ưu điểm bạn bắt đầu là có:
không cần phải lo lắng về hoạt động của bạn đã được luân chuyển
Trong nhiều trường hợp, mọi người lầm tưởng rằng khi họ có lỗi được tạo ra bởi sự thay đổi định hướng ("xoay"), họ có thể chỉ cần sửa nó bằng cách đưa vào android:configChanges="keyboardHidden|orientation"
.
Tuy nhiên, android: configChanges = "keyboardHidden | direction" không có gì khác hơn là một chiếc băng đô. Trong thực tế, có nhiều cách thay đổi cấu hình có thể được kích hoạt. Ví dụ: nếu người dùng chọn ngôn ngữ mới (tức là ngôn ngữ đã thay đổi), hoạt động của bạn sẽ được khởi động lại giống như cách thay đổi định hướng. Nếu bạn muốn, bạn có thể xem danh sách tất cả các loại thay đổi cấu hình khác nhau .
Chỉnh sửa : Quan trọng hơn, mặc dù, khi hackbod chỉ ra trong các bình luận, hoạt động của bạn cũng sẽ được khởi động lại khi ứng dụng của bạn ở chế độ nền và Android quyết định giải phóng bộ nhớ bằng cách giết chết nó. Khi người dùng quay lại ứng dụng của bạn, Android sẽ cố gắng khởi động lại hoạt động theo cách tương tự nếu có một số thay đổi cấu hình khác. Nếu bạn không thể xử lý điều đó - người dùng sẽ không vui ...
Nói cách khác, sử dụng android:configChanges="keyboardHidden|orientation"
không phải là một giải pháp cho "những lo lắng" của bạn. Cách đúng đắn là mã hóa các hoạt động của bạn để chúng hài lòng với bất kỳ lần khởi động lại nào mà Android ném vào chúng. Đây là một thực hành tốt sẽ giúp bạn xuống đường, vì vậy hãy làm quen với nó.
Vậy khi nào tôi nên sử dụng nó?
Như bạn đã đề cập có một lợi thế khác biệt. Ghi đè thay đổi cấu hình mặc định cho một vòng quay bằng cách tự xử lý nó sẽ tăng tốc mọi thứ. Tuy nhiên, tốc độ này không đi kèm với giá cả thuận tiện.
Nói một cách đơn giản, nếu bạn sử dụng cùng một bố cục cho cả dọc và ngang thì bạn đang ở trạng thái tốt bằng cách ghi đè. Thay vì tải lại toàn bộ hoạt động, các chế độ xem sẽ chỉ thay đổi xung quanh để lấp đầy không gian còn lại.
Tuy nhiên , nếu vì lý do nào đó bạn sử dụng bố cục khác khi thiết bị ở chế độ nằm ngang, thì thực tế là Android tải lại Activity của bạn là tốt vì sau đó nó sẽ tải lên bố cục chính xác. [Nếu bạn sử dụng ghi đè trên một Hoạt động như vậy và muốn thực hiện một số bố cục lại kỳ diệu trong thời gian chạy ... tốt, chúc may mắn - thật đơn giản]
Tóm tắt nhanh
Bằng mọi cách, nếu android:configChanges="keyboardHidden|orientation"
phù hợp với bạn, thì hãy sử dụng nó. Nhưng XIN hãy chắc chắn để kiểm tra những gì sẽ xảy ra khi một cái gì đó thay đổi, bởi vì một sự thay đổi định hướng không phải là con đường duy nhất một Hoạt động khởi động lại đầy đủ có thể được kích hoạt.