2010-10-04 39 views
11

Tôi đang viết một ứng dụng cần kiểm tra định kỳ máy chủ để tìm thư mới và thông báo cho người dùng. Tôi đã thấy một số ví dụ bằng cách sử dụng AlarmManager để đạt một BroadcastReciever mà có vẻ như là điều đúng để làm, nhưng tôi không thể dường như để có được nó để làm việc.android: chạy tác vụ nền bằng AlarmManager

Bất kỳ ai cũng có thể chỉ cho tôi hướng dẫn từng bước cho loại điều này (lặp lại báo thức kích hoạt một số loại mã nền nào đó kích hoạt Thông báo)?

TIA

+0

Hiện chúng tôi những gì bạn đã cố gắng, với các chi tiết về cách chính xác nó là không. –

+0

Hướng dẫn của tôi nằm trong sách (xin lỗi!). Có lẽ dự án và trang demo 'WakefulIntentService' sẽ giúp: http://github.com/commonsguy/cwac-wakeful – CommonsWare

+0

Chia sẻ mã xin vui lòng, tôi sắp chết! –

Trả lời

31

Dưới đây là một ví dụ hoàn chỉnh: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/

Các mô hình ví dụ này sử dụng, và một trong đó tôi đã tìm thấy điều đó dường như làm việc tốt, là sử dụng một máy thu khởi động để thiết lập các AlarmManager (và dĩ nhiên cũng kiểm tra để bắt đầu bỏ phiếu từ chính bạn Hoạt động quá, đối với trường hợp khi ứng dụng của bạn được cài đặt và hệ thống không được khởi động) và có AlarmManager gửi Ý định cho thu khác: 01.

Và sau đó từ AlarmReceiver bắt đầu một IntentService: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealAlarmReceiver.java

Từ bạn IntentService sau đó thực hiện cuộc gọi mạng của bạn để thăm dò ý kiến ​​cho dữ liệu, hoặc bất cứ điều gì bạn cần làm. IntentService tự động đặt công việc của bạn trong một thread nền, nó rất tiện dụng: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealService.java

Kiểm tra các tài liệu cho các lớp này quá, rất nhiều vào trong đó. Lời nhắc với ví dụ này là nó không đối phó với khoảng cách khóa thức (mã CommonsWare tuyệt vời thực hiện điều đó nếu bạn cần), nhưng nó có thể cung cấp cho bạn một số ý tưởng thêm về cách có khả năng giải quyết " thăm dò ý kiến ​​bằng cách sử dụng AlarmManager và dịch vụ "công cụ.

UPDATE: mã bây giờ là ở đây: https://github.com/charlieCollins/android-in-practice

+0

Cảm ơn bạn, điều này rất hữu ích. – rpcutts

+0

Câu trả lời này có vẻ khá gần với những gì tôi đã làm. Nên làm việc cho bạn folks. – mtmurdock

+2

Bạn có thể muốn đặt một WakeLock trên IntentService để đảm bảo điện thoại không đi ngủ ngay sau khi onReceive được thực hiện. Scratch rằng, chỉ cần đọc lưu ý của bạn caveat ... – charroch

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