Tôi có một menu chung trên ứng dụng của tôi với các biểu tượng. Nhấp vào biểu tượng sẽ bắt đầu Hoạt động. Có cách nào để biết liệu một hoạt động đã chạy và ngăn không cho nó bắt đầu nhiều lần (hoặc từ nhiều mục)? Tôi cũng có thể mang một hoạt động ở trạng thái onPause lên phía trước không?Ngăn chặn mở Hoạt động nhiều lần
Trả lời
Sử dụng này:
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
khi bắt đầu Activity
.
từ documentation:
Nếu đặt trong Intent truyền cho Context.startActivity(), lá cờ này sẽ gây ra hoạt động đưa ra để được đưa đến trước mặt lịch sử đống nhiệm vụ của mình nếu nó đã được đang chạy.
Trong tuyên bố hoạt động của bạn trong tập tin Manifest, thêm thẻ android:launchMode="singleInstance"
Từ tài liệu của startActivityForResult, nếu hoạt động bạn đang khởi chạy sử dụng chế độ khởi chạy singleTask, nó sẽ không chạy trong tác vụ của bạn và do đó bạn sẽ ngay lập tức nhận được kết quả hủy. –
Tôi đã nhân các điểm vào và điều này rất phù hợp với tôi –
trên thực tế, tôi không phải là fan lớn của "singleInstance" vì nó làm cho hoạt động chạy trong một cửa sổ riêng biệt như thể nó là một ứng dụng riêng biệt. trải nghiệm người dùng khi người dùng mở chế độ xem ứng dụng. –
tạo một thể hiện của hoạt động của bạn mà bạn không muốn bắt đầu nhiều lần như
Class ExampleA extends Activity {
public static Activity classAinstance = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
classAinstance = this;
}
}
Bây giờ có bao giờ u muốn crosscheck i có nghĩa là ngăn không cho nó bắt đầu nhiều lần, hãy kiểm tra như thế này
if(ExampleA.classAinstance == null) {
"Then only start your activity"
}
Hãy coi chừng điều này sẽ ngăn không cho Hoạt động thu gom rác thải. Ngoài ra, điều này sẽ không giúp ích nếu Hoạt động được bắt đầu từ một số thành phần khác (ví dụ: một ứng dụng khác) không thể truy cập (hoặc thậm chí biết) tham chiếu Hoạt động tĩnh. – lxgr
Thêm này để định nghĩa Activity
của bạn trong Androidmanifest.xml
...
android:launchMode = "singleInstance"
Chỉ cần sử dụng
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
thêm
@Override
protected void onDestroy() {
super.onDestroy();
finish();
}
hoặc
launchmode này đến singleTask/singlemode
hoặc
luôn mở hoạt động mới bằng cách xóa stack
Vui lòng thêm một số giải thích cho câu trả lời của bạn. – ItamarG3
** Từ hàng đợi đánh giá: ** Tôi có thể yêu cầu bạn thêm một số ngữ cảnh xung quanh câu trả lời của bạn hay không. Các câu trả lời chỉ có mã khó hiểu. Nó sẽ giúp người hỏi và người đọc trong tương lai cả khi bạn có thể thêm nhiều thông tin hơn trong bài đăng của mình. –
tôi đã nhận nó một cách hoàn hảo làm việc bằng cách làm như sau. Trong hoạt động gọi hoặc dịch vụ (thậm chí từ một ứng dụng khác)
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME);
//the previous line can be replaced by the normal Intent that has the activity name Intent launchIntent = new Intent(ActivityA.this, ActivityB.class);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(launchIntent);
và trong biểu hiện của hoạt động nhận (tôi muốn ngăn chặn việc mở hai lần)
<activity android:name=".MainActivity"
android:launchMode="singleTask"
>
- 1. Ngăn chặn để xử lý các đối tượng nhiều lần
- 2. Ngăn chặn menu chọn mở
- 3. Ngăn chặn nhiều mẫu biểu mẫu
- 4. Ngăn chặn mở nhiều phiên bản của ứng dụng VB
- 5. Ngăn chặn hoạt động không bị phá hủy
- 6. Ngăn chặn cùng một cửa sổ con nhiều lần trong biểu mẫu MDI
- 7. jQuery prepend - ngăn chặn tự động cuộn
- 8. Jquery, ngăn chặn hoạt ảnh xếp hàng
- 9. Ngăn chặn việc thực thi Javascript hai lần
- 10. Hoạt động bắt đầu từ thông báo được mở ở đầu ngăn xếp hoạt động
- 11. Làm thế nào để ngăn chặn chuột nhập/xuất hiện quá nhiều lần
- 12. Làm thế nào để ngăn chặn một phương thức được rút ra nhiều lần?
- 13. Làm cách nào để ngăn chặn nhiều lần chèn khi gửi biểu mẫu bằng PHP?
- 14. Làm thế nào để ngăn chặn gắn trình xử lý sự kiện nhiều lần?
- 15. Thành tích Trung tâm trò chơi mở khóa nhiều lần
- 16. UITableView đẩy segue kích hoạt nhiều lần
- 17. AdMob trên nhiều hoạt động?
- 18. HTML CSS Cách ngăn chặn ô bảng mở rộng
- 19. dạng Ngăn chặn khỏi bị nộp hai lần
- 20. Làm thế nào để ngăn Sublime Text 2 mở tập tin/dự án mở lần cuối khi khởi động
- 21. Asp.net MVC FileContentResult - ngăn chặn mở trong trình duyệt
- 22. hoạt động ngăn xếp
- 23. Làm thế nào để ngăn chặn PyCharm tự động đóng các tệp đã mở?
- 24. Cách khởi chạy hoạt động chỉ một lần khi ứng dụng được mở lần đầu tiên?
- 25. Ngăn chặn nhiều trường hợp của ứng dụng của tôi
- 26. Mở Schema.orgHầu w/nhiều lần & ngày đóng
- 27. Ngăn chặn nhiều âm báo thông báo android
- 28. Thông báo mở hoạt động, nhấn nút quay lại, hoạt động chính được mở?
- 29. Làm thế nào để ngăn chặn onNavigationItemSelected cháy khi hoạt động được khởi chạy?
- 30. Cách ngăn nhiều lần gửi biểu mẫu trên nhiều lần nhấp trong PHP
Tôi đã không làm phát triển Android trong một thời gian, nhưng tôi khá chắc chắn rằng Android sẽ đưa ra một ví dụ hiện tại của 'Hoạt động' của bạn thay vì bắt đầu một hoạt động mới. –