2011-07-08 11 views
7

Appliaction đang khởi động lại từ màn hình đầu tiên và không giữ lại màn hình thứ hai. Ứng dụng giữ lại các hoạt động theo cách thông thường sau khi khởi động lại ứng dụng hoặc nếu bạn nhấn nút BACK trong ứng dụng trên màn hình chính.

  • Hành vi chính xác phải là.

Ứng dụng phải luôn giữ lại các hoạt động theo cách thông thường.

Làm cách nào để giải quyết vấn đề này cho đơn đăng ký của tôi? Tôi có thể khởi động lại ứng dụng trong lần chạy đầu tiên không?

+0

Tôi phát hiện tình huống chạy ứng dụng đầu tiên và khởi động lại ứng dụng. nếu (first_run) { Log.w (TAG, AppHelper.FIRST_RUN); PendingIntent intent = PendingIntent.getActivity (this.getBaseContext(), 0, (new Intent (getIntent())). AddCategory (Intent.CATEGORY_LAUNCHER), Intent.FLAG_ACTIVITY_NEW_TASK); AlarmManager mgr = (AlarmManager) this.getSystemService (Context.ALARM_SERVICE); mgr.set (AlarmManager.RTC, System.currentTimeMillis() + 1000, ý định); System.runFinalizersOnExit (true); System.exit (2); trả lại; } – degratnik

Trả lời

1

Tùy thuộc vào cách ứng dụng được định nghĩa trong file manifest và liệu nó có bất kỳ cơ chế để lưu và khôi phục trạng thái của nó ....

Dựa trên bước của bạn, nó có thể tạo ra một số trường hợp của cùng một ứng dụng (kiểm tra this)

hoặc nó không được sử dụng các ví dụ Bunble trong onCreate

người ta chắc chắn sẽ không được tự động cho tất cả các ứng dụng để quay trở lại lưu màn hình đó là tại khi nó được tạm dừng hoặc bị phá hủy (một số ứng dụng không muốn điều đó, suy nghĩ về ngân hàng của bạn quản lý tài khoản ...)

Sửa:

Vì vậy, nếu tôi hiểu đúng từ bình luận của bạn, nó hoạt động như bạn mong đợi khi bạn thoát khỏi ứng dụng với phím BACK, nhưng không phải khi bạn sử dụng phím HOME ...

đọc liên kết tôi đăng: http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

bạn sẽ hiểu rằng khi bạn nhấn phím HOME, trường hợp của ứng dụng của bạn, bạn đang ở trong không bị tiêu diệt (và do đó tình trạng hiện thời sẽ không được lưu) . Bắt đầu lại nó chỉ bắt đầu một cá thể khác (từ màn hình ban đầu).

Khi người dùng nhấn phím BACK, hoạt động hiện tại bị hủy và hoạt động trước đó tiếp tục.

...

Một tác vụ là một đơn vị gắn kết mà có thể di chuyển đến "nền" khi người dùng bắt đầu một nhiệm vụ mới hoặc truy cập vào màn hình Home , qua HOME chính

Nếu bạn muốn thay đổi cách hoạt động, hãy xem launchMode trong tệp kê khai.

+0

Nhưng Ứng dụng vẫn giữ các hoạt động theo cách thông thường sau khi khởi động lại ứng dụng hoặc nếu bạn nhấn nút BACK trong ứng dụng trên màn hình chính. – degratnik

+0

Sau khi khởi động lại ứng dụng, tất cả đều OK. – degratnik

+0

Tôi không hiểu những gì bạn nói ở đây so với câu hỏi ban đầu ... ý của bạn là gì "sau khi khởi động lại ứng dụng"? bạn đã từ bỏ ứng dụng như thế nào? – Matthieu

0

Tôi nghĩ rằng Trình quản lý ứng dụng chạy ứng dụng của tôi theo cách không đúng. Nó chạy các ứng dụng của tôi trong nhiệm vụ của nó. Khi tôi nhấn HOME và nhấn biểu tượng ứng dụng, tôi chạy nhiệm vụ thứ hai với ứng dụng của mình.

Tôi đã thử nghiệm nó. Tôi đã tạo hai ứng dụng App1, App2. App2 có hai hoạt động A và B. App1 chạy App2 theo cách đơn giản nhất.

Intent intent = new Intent(Intent.ACTION_RUN); 
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1")); 

Kiểm tra 1. Chạy ứng dụng1. App1 vận hành hoạt động của App2 A. Acctivity Một hoạt động chạy B. Bấm Home. Nhấn biểu tượng App2. Bạn có thể xem hoạt động của App2 A.

Tôi đã thay đổi mã để khởi chạy App2.

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1")); 

Kiểm tra 2. Chạy App1. App1 vận hành hoạt động của App2 A. Acctivity Một hoạt động chạy B. Bấm Home. Nhấn biểu tượng App2. Bạn có thể xem hoạt động App2 B.

+0

Câu hỏi được kết nối http://stackoverflow.com/questions/6649685/how-force-aplication-always-run-in-its-own-task – degratnik