Có thể định cấu hình ứng dụng android để nếu người dùng đã mở ứng dụng của bạn, khởi chạy nhiều hoạt động, sau đó quay lại màn hình chính và khởi chạy lại ứng dụng của bạn, thay vì chuyển sang hoạt động chính, họ sẽ được đưa đến hoạt động cao nhất trên stack (hoạt động gần đây nhất trong ứng dụng của bạn)?Làm thế nào để làm cho một ứng dụng Android trở lại hoạt động mở cuối cùng khi khởi động lại?
Trả lời
Khi được khởi chạy qua biểu tượng trên màn hình chính, Android sẽ luôn khởi động hoạt động với bộ lọc android.intent.action.MAIN
trong AndroidManifest.xml
, trừ khi ứng dụng đang chạy (trong trường hợp này rõ ràng sẽ khôi phục hoạt động ở trên cùng của ngăn xếp).
Để đạt được những gì bạn mô tả, bạn có thể lưu trữ hoạt động hiển thị cuối cùng trong SharedPreferences
và có hoạt động Dispatcher bắt đầu hoạt động cuối cùng theo tùy chọn.
Vì vậy, trong mọi hoạt động bạn muốn tái khởi động:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
Và một Dispatcher hoạt động tương tự như sau:
public class Dispatcher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}
chú
- Bạn có thể tạo lớp cơ sở cho ghi đè
- Các Dispatcher hoạt động rõ ràng là cần phải hành động
android.intent.action.MAIN
Cảm ơn bạn vì điều này. Tôi đã thấy câu trả lời khác mà bây giờ nói với tôi rằng những gì tôi đang tìm kiếm thực sự là hành vi mặc định và nó chỉ là một thực tế rằng tôi đã sử dụng eclipse (và chưa được cập nhật để 0.9.6 của plugin) đã gây ra vấn đề của tôi. Vì vậy, tôi sẽ nghĩ rằng tôi không phải kết hợp giải pháp của bạn. Đúng không? Hay có lý do nào khác mà tôi cần phải theo đuổi ý tưởng của bạn theo chương trình? – JohnRock
@johnrock: Android tạo ngăn xếp được sử dụng để tìm hoạt động hiển thị cuối cùng * trong khi ứng dụng của bạn đang chạy *. Thật không may bạn không bao giờ biết khi nào ứng dụng của bạn bị giết vì vậy nếu bạn * luôn luôn * muốn khôi phục hoạt động cuối cùng (ngay cả dưới áp lực bộ nhớ, sau khi khởi động lại, v.v.) thì bạn cần một cái gì đó tương tự như những gì tôi đề xuất. Nếu bạn ổn với * phần lớn thời gian *, bạn không làm vậy. –
Xin chào, chỉ muốn thêm rằng hành vi dự định không hoạt động vì nó được cho là không phải "hầu hết thời gian". Tôi đã mô tả vấn đề ở đây http://stackoverflow.com/questions/6903761/after-home-button-press-re-launching-app-shows-intial-activity-not-current/6903958#6903958 –
này là hành vi mặc định và câu hỏi này đã được hỏi nhiều lần trước đây: Android: keep task's activity stack after restart from HOME
Android Run application from last Activity
Note rằng nếu bạn đang khởi chạy ứng dụng của bạn từ Eclipse, đó là những gì phá vỡ chức năng mặc định này. Thay đổi cấu hình khởi chạy của bạn để khởi chạy không có hoạt động nào cần khắc phục mọi thứ.
Tuy nhiên, khi hành vi này đã được cố định trong 0.9.6 release của các plugin ADT cho Eclipse trong vài tuần qua, bạn không còn cần điều đó workaround:
Applications phóng từ ADT tại cư xử như thể họ đã nhấp từ Màn hình chính.
Đó chỉ là trường hợp * khi ứng dụng đang chạy *. Vì bạn không bao giờ có thể thực sự biết, tôi sẽ tự mình xử lý nó. Tôi đã chỉnh sửa câu trả lời của mình để làm rõ. –
Nó không phức tạp. Bạn chỉ cần thao tác tệp kê khai.
AndroidManifest.xm
<activity
android:name=".MainActivity"
android:alwaysRetainTaskState="true"
android:exported="true"
.
.
.
đọc về 'android: xuất khẩu' & 'android: alwaysRetainTaskState' ở đây:
- 1. Nút quay lại Android không khởi động lại hoạt động?
- 2. Android Khởi động lại ứng dụng
- 3. Làm thế nào để giữ bàn phím mềm mở khi khởi động hoạt động trong Android?
- 4. làm thế nào để tải lại menu android trong cùng một hoạt động?
- 5. làm thế nào để khởi động lại kho git
- 6. Làm thế nào để xóa ngăn xếp trở lại hoạt động gốc khi người dùng rời khỏi ứng dụng?
- 7. Làm thế nào để làm khởi động lại với Unicorn?
- 8. Android onNewIntent từ trình khởi chạy ứng dụng mang lại cho tôi ý định cuối cùng
- 9. Làm thế nào để có được kết quả từ một IntentService trở lại một hoạt động?
- 10. Khởi động lại ứng dụng trong Eclipse
- 11. Android: Chụp lại hoạt động
- 12. Nhận Dấu thời gian khởi động lại Windows cuối cùng?
- 13. Emacs: mở lại bộ đệm từ phiên cuối cùng khi khởi động?
- 14. Tránh Ứng dụng Khởi động lại khi Bàn phím Phần cứng Mở
- 15. Ứng dụng Android khởi động lại trên thay đổi hướng
- 16. Làm thế nào để khởi động lại từ vỏ tro?
- 17. Android: giữ cho hoạt động ngăn xếp công việc sau khi khởi động lại từ CHỦ
- 18. làm thế nào để khởi động lại một phương pháp từ thời điểm thất bại cuối cùng của nó
- 19. Làm cách nào để giữ lại một đối tượng phức tạp trong Hoạt động khởi động lại?
- 20. làm thế nào để buộc các hoạt động khởi động lại từ ý định
- 21. Khởi động lại khi khởi động/Khởi động lại hành khách
- 22. Khởi động lại máy android
- 23. Khởi động lại ứng dụng Backbone
- 24. (android) Làm thế nào để làm một cái gì đó trên ứng dụng "khởi động"?
- 25. Làm thế nào để khởi động lại dịch vụ RabbitMQ
- 26. Khởi động lại ứng dụng bằng C#
- 27. Khởi động lại ứng dụng Android sau khi quá trình bị giết
- 28. Làm thế nào để vô hiệu hóa ứng dụng Android tự động khởi động lại sau một sự cố (Android 2.2)
- 29. Tự động khởi động lại ứng dụng Erlang
- 30. Khởi động ứng dụng android mà không cần hoạt động
giải pháp tốt hơn và sạch hơn: http://stackoverflow.com/ a) 10598619/5494342 – Mo12
Để lưu nội dung, nhận xét trước đó có thể gây tranh cãi. Bạn cũng có thể nói câu trả lời trong liên kết đó là không phù hợp mặc dù có thể chấp nhận được, và đi kèm với đánh bắt rằng nó sẽ không hoạt động 100% thời gian. Xem nhận xét trong câu trả lời được chấp nhận của câu hỏi này trước khi bạn quyết định giải pháp nào phù hợp với tình huống của bạn. – Donamite