Trong Android, nếu bạn muốn xóa ngăn xếp hiện tại Activity
và khởi chạy Activity
mới (ví dụ: đăng xuất khỏi ứng dụng và khởi chạy nhật ký Activity
), có vẻ như có hai cách tiếp cận.Activity.finishAffinity() vs Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
Có bất kỳ lợi thế nào so với cách khác nếu cấp API mục tiêu của bạn cao hơn 16 không?
1) Hoàn thành Affinity
Calling finishAffinity()
từ một hoạt động. Activity.finishAffinity
2) Flags Ý định
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
Cách tiếp cận finishAffinity()
phù hợp cho> = API 16.
Cờ cách tiếp cận Intent
phù hợp cho> = API 11.
Để rõ ràng, với mục đích làm sạch ngăn xếp hiện tại Activity
, cả hai cách tiếp cận đều có vẻ hoạt động như nhau. Câu hỏi của tôi là có vấn đề với một trong những người đã trải qua và, do đó, có bất kỳ lý do nào để chọn một người khác không?
Sự chậm trễ, hoặc nhấp nháy, mà bạn đề cập ban đầu là những gì khiến tôi đặt câu hỏi finishAffinity(). IIRC, một số thiết bị Samsung nói riêng có một nhấp nháy rất rõ rệt khi sử dụng finishAffinity() nhưng tôi không còn thiết bị để kiểm tra nữa. –
Trong trường hợp này, đó là phiên bản ý định có nhấp nháy theo video. – brindy
Thực ra, tôi không chắc là tôi sẽ gọi nó là một nhấp nháy (dựa trên video). Có một cái gì đó chắc chắn khác nhau về những gì xảy ra trực quan mặc dù. finishAffinity trông giống như nó xuất hiện trên đầu trang, phiên bản ý định có vẻ như nó đã "hoàn thành" tiết lộ một cái khác ở trên cùng của ngăn xếp. – brindy