Ứng dụng của tôi cần lấy một số dữ liệu từ web vào một thời điểm cụ thể mỗi ngày. Vì vậy, tôi sử dụng một AlarmManager để sắp xếp các nhiệm vụ và hoạt động ok.Tôi có nên sử dụng PendingIntent.getService() hoặc getBroadcast với AlarmManager không?
Nhưng khi xem xét các ví dụ khác nhau, có vẻ như có hai cách để xử lý với AlarmManager khi nói đến mục đích đang chờ xử lý.
Một lần sử dụng PendingIntent.getBroadcast()
để gọi bộ thu phát sóng khi báo thức tắt và bên trong bộ thu đó dịch vụ thực hiện công việc thực được bắt đầu.
Cách tiếp cận khác là sử dụng PendingIntent.getService()
và gọi trực tiếp dịch vụ khi báo thức đó tắt.
Ai đó có thể giải thích cho tôi sự khác biệt giữa hai cách tiếp cận để tôi có thể quyết định người nào phải dựa vào?
EDIT: Một câu hỏi nữa là nơi lấy khóa thức khi sử dụng getService()?
Ví dụ, khi sử dụng BroadcastReceiver Tôi có dòng sau trong onReceive():
WakeReminderIntentService.acquireStaticLock(context);
Làm thế nào tôi nên được các khóa trỗi dậy nếu tôi thay vì gọi cho dịch vụ trực tiếp như:
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
Tôi có nên đơn giản nhận được nó từ bên trong dịch vụ thay thế không?
Nó thực sự không quan trọng bằng cách này hay cách khác. Bạn có thể sử dụng IntentService hoặc Service hoặc Broadcast cục bộ hoặc toàn cục. Bạn sẽ có thể làm như vậy trong tất cả chúng. –