2010-04-18 24 views
5

Có thể dừng tất cả các dịch vụ đã bắt đầu khi người dùng truy cập vào nút Trang chủ không?Dừng tất cả các dịch vụ đã bắt đầu trên ứng dụng Đóng/Thoát

tôi sử dụng:

startService(new Intent(ClassName.this, ClassName2.class)); 
stopService(new Intent(ClassName.this, ClassName2.class)); 

này có nghĩa là tôi sẽ phải bằng cách nào đó thêm 'stopService()' cho 7+ các lớp ứng dụng của tôi Tôi đã nghiên cứu đề tài này và tôi nghĩ rằng có 'onTerminate' nhưng vẫn không chắc cách thực hiện điều này.

Bất kỳ trợ giúp hoặc gợi ý nào sẽ được đánh giá cao! Cảm ơn!

Trả lời

16

Có thể dừng tất cả các dịch vụ bắt đầu khi người dùng truy cập vào nút Home ?

Không trực tiếp. Để bắt đầu, bạn không có cách nào để biết họ đã nhấn HOME.

Nếu bạn chỉ muốn dịch vụ chạy trong khi các hoạt động đang sử dụng, hãy xem xét loại bỏ startService(). Thay vào đó, hãy sử dụng bindService() trong các phương thức onStart() của các hoạt động cần dịch vụ và gọi unbindService() trong các phương thức onStop() tương ứng của chúng. Bạn có thể sử dụng BIND_AUTO_CREATE để dịch vụ được khởi động chậm khi cần và Android sẽ tự động ngừng dịch vụ sau khi tất cả các kết nối đã không được kết nối.

+0

Cảm ơn bạn đã trả lời. Tất cả điều này có ý nghĩa, một điều mặc dù, có thêm thông tin về "BIND_AUTO_CREATE" không? Tôi hiểu khái niệm 'dịch vụ', nhưng vẫn không chắc chắn làm cách nào để giữ cho âm nhạc phát giữa 7+ Hoạt động của tôi, nhưng dừng lại khi người dùng thoát ra khỏi 'Màn hình chính'. Nếu có ai khác có cùng vấn đề, tôi đã tìm thấy một bài viết hay về các dịch vụ của Android tại đây: http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/ –

+0

mẫu mong muốn sẽ khó triển khai. Đó là lý do tại sao hầu hết người chơi nhạc không làm những gì bạn làm - họ đặc biệt * muốn * nhạc phát khi người dùng nhấn HOME, cung cấp Thông báo để truy cập nhanh vào ứng dụng để dừng nhạc. Trong thực tế, bạn sẽ không thể thực hiện mẫu này đặc biệt cho HOME. Bạn có thể thực hiện mẫu này cho "không có hoạt động nào của tôi ở phía trước", bằng cách giữ một lá cờ cho dù bất kỳ hoạt động nào của bạn ở phía trước, cộng với một cơ quan giám sát đóng nhạc nếu cờ là sai quá lâu. – CommonsWare

+0

Vâng, đây chỉ là trò chơi, vì vậy khi trò chơi bị tạm dừng/tạm dừng, nhạc sẽ không phát. Tôi nhận thấy rằng tôi có thể sử dụng onPause() để nó ngừng phát nếu tôi bấm 'HOME' nhưng vấn đề duy nhất là nó dừng lại khi tôi tiếp tục trong menu trò chơi. Bất kỳ gợi ý nào để giải quyết vấn đề này? –

2

Nếu bạn muốn dịch vụ dừng khi người dùng rời khỏi ứng dụng của bạn, tôi sẽ hỏi bạn có muốn sử dụng dịch vụ không. Bạn có thể làm cho ứng dụng của bạn trở nên phức tạp hơn mức cần thiết.

Ngoài ra, dòng này là thực sự đáng ngờ:

 
startService(new Intent(ClassName.this, ClassName2.class)); 

Bạn đang làm cho một Intent mà hành động là tên lớp của một lớp, và dữ liệu URI là tên của lớp khác ...! Có lẽ bạn có nghĩa là một cái gì đó như "mới Intent (bối cảnh, MyService.class)"?

+0

Cảm ơn bạn đã nhập liệu, tôi chỉ đang cố gắng phát nhạc trong ứng dụng của mình. Tôi cũng có cài đặt nhạc/âm thanh để tắt và v.v. Tôi cũng sẽ sửa phần "Ý định mới". –

+0

OK. Tuy nhiên, bạn không cần dịch vụ để chơi nhạc. – hackbod

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