2012-04-04 4 views
16

Mô tả:Ý định để bắt đầu hoạt động - nhưng không mang đến trước

  • Hoạt động Một được hiển thị (hoặc ở chế độ nền)
  • Ý định tôi được nhận bởi một phát sóng với tính năng bổ sung có giá trị và sau đó chuyển phần bổ sung sang Intent I2 mới sẽ được sử dụng để bắt đầu hoạt động A.
  • Kết quả: Không được mang hoạt động về trước nếu hoạt động ở chế độ nền.

Code:

Intent I2= new Intent(context, MyActivity.class); 
I2.putExtra(.. 
I2.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); // | Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(I2); 

Lưu ý: tôi đã thêm không "android: taskAffinity" để biểu lộ .. tôi nghĩ bạn nên biết

+2

tại sao bạn muốn startActivity khi bạn không muốn nó ở phía trước, ..? bạn muốn làm gì ..? – ngesh

+0

Vì vậy, tôi đã cập nhật nó: KHÔNG BẬT hoạt động trước IF hoạt động ở chế độ nền! – pulancheck1988

+0

Không sử dụng 'FLAG_ACTIVITY_MULTIPLE_TASK' cho mục đích này! Nếu bạn kết thúc việc bắt đầu nhiều nhiệm vụ, bạn sẽ gặp khó khăn trong việc quản lý chúng. Đây là một loại sâu mà bạn không muốn mở! –

Trả lời

7

nếu bạn muốn hoạt động của bạn để được ở chế độ nền thêm dòng này trong onCreate hoạt động

moveTaskToBack(true); 
+0

Nó hiển thị hoạt động trong một giây. – zgulser

4

bạn có thể sử dụng dòng này trong phương pháp onCreate() của bạn:

moveTaskToBack(true); 
+0

bạn có thể cho tôi biết làm thế nào tôi có thể khởi động lại hoạt động sau khi gọi 'moveTaskToBack (true); ' tôi đã sử dụng' Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK' nhưng không khởi động lại hoạt động của nó làm mới .. lưu ý ** i ví dụ hoạt động tương tự nhiều lần – medo

2

Bạn không muốn bắt đầu Activity ở chế độ nền. Có những cách tốt hơn để làm những gì bạn muốn. Bạn có thể đăng ký Activity để nhận thông báo phát sóng Intent. Nó sẽ nhận được cuộc gọi đến onReceive() ngay cả khi nó đang ở chế độ nền. Bạn có thể xác định xem Activity của bạn có đang ở chế độ nền hay không bằng cách đặt biến thành true trong onPause()false trong onResume(). Sau đó, trong onReceive(), nếu biến là true bạn đang ở chế độ nền.