2010-07-20 34 views
10

tôi đang cố gắng để đạt được những điều sau với Android:Android: làm thế nào để biết khi một ứng dụng đi vào hoặc chế độ "nền"?

  • khi ứng dụng ở chế độ nền, một cuộc thăm dò chủ đề một máy chủ tất cả bây giờ và sau đó để lấy dữ liệu và thông báo cho người dùng nếu dữ liệu mới có sẵn. Tôi đang sử dụng Dịch vụ cho điều đó, tốt.

  • khi ứng dụng đang hoạt động "đang hoạt động", nghĩa là một trong các hoạt động của ứng dụng hiển thị, cuộc thăm dò sẽ dừng lại vì nó có thể ảnh hưởng đến các hành động khác của người dùng.

Tôi không hiểu cách phát hiện chuyển đổi giữa việc sử dụng "hoạt động" hoặc "nền" của ứng dụng. Các phương thức hoạt động onResume() dường như không có ích, vì một hoạt động có thể được ẩn hoặc hiển thị trong quá trình sử dụng "hoạt động". Sự hiểu biết của tôi là bản thân ứng dụng không tạo ra sự khác biệt giữa 2 trạng thái.
Nó có thể liên quan khi nhấn nút HOME không? Có cách nào khác để làm sự khác biệt không?
Tôi đang nghĩ đến phương thức ủy quyền ứng dụng của iPhone tương đương applicationDidEnterBackground. Có đúng cách để suy nghĩ với Android không? Hay tôi sẽ sử dụng cách tiếp cận khác?

Cảm ơn bạn.

+0

Tương tự: http://stackoverflow.com/questions/3136187 – yanchenko

Trả lời

3

Tôi sẽ tham khảo Activity Lifecycle. Ở giữa onResumeActivity của bạn là 'hoạt động', nghĩa là, màn hình đó ở trên màn hình và người dùng có thể tương tác với nó. Nếu phương thức của hoạt động của bạn được gọi thì bạn nên giả sử rằng phương thức đó không còn 'hoạt động' nữa và người dùng không thể tương tác với nó nữa cho đến khi onResume được gọi lại. Nếu bạn muốn theo dõi điều này trong dịch vụ của bạn, bạn sẽ phải làm điều này bằng tay.

Điều này có thể dễ dàng đạt được nhất bằng cách gọi một phương thức trong dịch vụ của bạn ở Activity#onResume tăng số lượt truy cập hoặc đặt cờ và trong hoàn nguyên thay đổi đó. Nếu bạn có nhiều hoạt động thì rất có thể bạn sẽ cần một bộ đếm, có thể là số AtomicInteger và sử dụng nó để xác định thời điểm bạn nên tiếp tục cuộc thăm dò ý kiến ​​của mình.

Tôi có thể sẽ đợi một chút thời gian khi bộ đếm đạt 0, kiểm tra lại và nếu nó vẫn còn 0 tiếp tục bỏ phiếu. Điều này sẽ giải thích khoảng cách giữa một hoạt động của và số khác là onResume.

+0

Cuối cùng tôi đã làm điều đó chỉ trên hoạt động gốc: ngay sau khi hoạt động gốc biến mất (vì ứng dụng bị bỏ lại hoặc vì hoạt động tiếp theo đã bao gồm nó), tôi kích hoạt dịch vụ. Khi bạn đề nghị, tôi sau đó kích hoạt một bộ đếm thời gian, và sau đó bắt đầu bỏ phiếu. Nếu hoạt động gốc xuất hiện trước khi hết giờ, dịch vụ sẽ bị dừng. Tôi đánh dấu câu trả lời của bạn vì nó đã giúp tôi anyway, cảm ơn. – user244129

+4

câu trả lời cho câu hỏi không được đưa ra ... Câu hỏi là làm thế nào bạn nhận ra rằng toàn bộ APP đi trong nền và không chỉ có một hoạt động –

Các vấn đề liên quan