2017-06-20 25 views
5

Có thể một số người vui lòng cho tôi biết sự khác biệt giữa popBackStackImmediatepopBackStack? Tôi thực sự không nhận được nó và bổ sung "cờ" 0 (số không) có nghĩa là gì trong ngày 2 của popBackStack?sự khác biệt giữa popBackStackImmediate và popBackStack

Cảm ơn bạn rất nhiều vì giúp bạn guys ...

Trả lời

3

popBackStack() sẽ bật stack trở lại, nhưng nó sẽ không thực hiện các pop cho đến hơi muộn - nó đăng tải một thông điệp để làm điều đó vì vậy bạn không phải đợi một hoạt động nặng ký xảy ra.

popBackStackImmediate() thực hiện ngay bây giờ, trước khi hàm trả về. Của nó chậm hơn và có thể gây ra vấn đề perf. Sử dụng phiên bản không trực tiếp khi có thể.

0 làm tham số thứ hai có nghĩa là sử dụng hành vi mặc định (loại bỏ phần tử trên cùng trong hậu trường). Bạn cũng có thể vượt qua nó một loạt các cờ Boolean ORed. Cờ duy nhất hiện được hỗ trợ là POP_BACK_STACK_INCLUSIVE, cờ này sẽ thay đổi cờ đó để tách ra nhiều đoạn.

+0

cảm ơn bạn rất nhiều Gabe! – JSON4Live

6

popBackStackImmediate() sẽ thực hiện lệnh popping ngay lập tức trong cuộc gọi. Các kết quả có thể được xác minh ngay lập tức sau cuộc gọi. Nó hơi chậm hơn vì tất cả các hành động popping được thực hiện trong cuộc gọi.

popBackStack() sẽ thực hiện lệnh popping trong vòng lặp sự kiện tiếp theo (tức là giai đoạn vẽ tiếp theo). Vì vậy, nó không đồng bộ với phần còn lại của mã. Điều đó có nghĩa là FragmentTransaction sẽ không bị xóa khỏi hậu trường sau khi thực hiện điều này. Trong hầu hết các trường hợp, bạn không cần cầnFragmentTransaction ngay lập tức xuất hiện, vì vậy nó đợi cho đến khi mọi thứ khác được hoàn thành trước khi nó thực sự xảy ra. Tất cả điều này xảy ra quá nhanh đến nỗi người dùng sẽ không nhận ra nó.

Cờ ở cuối không có liên quan. Nó hiện chỉ có thể được đặt thành POP_BACK_STACK_INCLUSIVE. Các FragmentManager cho phép bạn thiết lập một ID trên backstack. Nếu bạn đặt cờ, sau đó nó sẽ bật FragmentTransaction khớp với ID được chỉ định cho đến khi có một ID không khớp với ID hoặc dưới cùng. Nếu cờ không được đặt, thì tất cả FragmentTransaction giây không khớp với ID sẽ xuất hiện cho đến khi đạt đến một ID phù hợp với ID hoặc dưới cùng.

+0

cảm ơn bạn rất nhiều DeeV! – JSON4Live

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