2012-01-03 30 views
14

Như tôi vừa biết, Android bảo lưu quyền hủy bỏ quy trình của ứng dụng nền bất cứ lúc nào để tái chế RAM. Ứng dụng vẫn đang chạy và có thể được tiếp tục tuy nhiên, nhưng tất cả các biến tĩnh của tôi đã biến mất (xem this bài viết).Android Simulator: Cách dễ dàng để mô phỏng quá trình khởi động lại do bộ nhớ thấp?

Tôi muốn mô phỏng hành vi của ứng dụng trong trường hợp này. Cách dễ nhất để làm điều này là gì? Chắc chắn phải có một cách dễ dàng hơn và dễ dự đoán hơn là viết một số ứng dụng bổ sung phân bổ nhiều bộ nhớ.

+0

Điều này khác với giết chết quá trình của riêng bạn 'android.os.Process. killProcess (android.os.Process.myPid()) '? – tidbeck

+0

@tidbeck: Đoán của bạn tốt như tôi. Tôi đang đề cập đến bài viết này: http://android-developers.blogspot.com/2010/04/multitasking-android-way.html –

+0

bản sao có thể có của [Android: Cách bắt buộc dịch vụ khởi động lại (OS giết hại trên hành vi bộ nhớ thấp) ] (http://stackoverflow.com/questions/7257378/android-how-to-force-restart-service-os-killing-on-low-memory-behavior) – Flow

Trả lời

3

trả lời ngắn gọn: định hướng thay đổi nếu bạn đang sử dụng một giả lập . nếu sử dụng thiết bị thực tế, hãy thay đổi cài đặt bằng cách đi tới cài đặt -> tùy chọn nhà phát triển -> không giữ các hoạt động.

xem câu trả lời của tôi cho thisthis để được giải thích chi tiết.

+0

Cảm ơn! Tôi sẽ kiểm tra lần sau khi tôi cập nhật Ứng dụng Android của mình. –

+0

điều này sẽ kiểm tra thay đổi cấu hình - không phải là quá trình khởi động lại. Đây là hai điều khác nhau. – ZakTaccardi

+0

Không giữ các hoạt động sẽ không phá hủy bối cảnh ứng dụng toàn cầu, chúng tôi muốn có thể phá hủy bối cảnh ứng dụng toàn cầu để chạy lại nó sẽ cố gắng bắt đầu từ ứng dụng onCreate() và bắt đầu hoạt động được mở lần cuối –

2

Một cách khác là xây dựng một ứng dụng siêu cơ bản gọi killBackgroundProcesses() cho gói của bạn, bởi vì phương pháp này "giống như hạt nhân giết chết các quy trình đó để lấy lại bộ nhớ; hệ thống sẽ chăm sóc khởi động lại các quy trình này trong tương lai khi cần. "

1

Để diệt các tiến trình nền (nhưng vẫn relaunch qua lịch sử), bạn chỉ có thể sử dụng lệnh shell quản lý hoạt động trên mô phỏng hoặc thiết bị:

$ adb shell am kill com.my.package 
Các vấn đề liên quan