5
การจัดกำหนดการงานที่เกิดขึ้นประจำใน Android
ฉันกำลังออกแบบแอปที่มีงานประจำในการส่งสถานะไปยังเซิร์ฟเวอร์เฉพาะตราบเท่าที่แอปนั้นอยู่เบื้องหน้า ในการค้นหาของฉันบนเว็บฉันเห็นแนวทางที่แตกต่างกันเล็กน้อยและต้องการทราบว่าวิธีใดดีที่สุดในการทำเช่นนี้ วิธีที่ดีที่สุดในการกำหนดเวลาการโทรจากเซิร์ฟเวอร์คืออะไร? ตัวเลือกที่ฉันเห็นคือ: เครื่องจับเวลา ScheduledThreadPoolExecutor บริการ . BroadcastReciever กับAlarmManager ความคิดเห็นของคุณคืออะไร? แก้ไข: เหตุผลที่ฉันต้องการสิ่งนี้สำหรับแอพที่ใช้แชทที่ส่งการกระทำทั้งหมดของผู้ใช้ไปยังเซิร์ฟเวอร์ระยะไกล เช่นผู้ใช้กำลังพิมพ์ข้อความผู้ใช้กำลังอ่านข้อความผู้ใช้ออนไลน์ผู้ใช้ออฟไลน์เป็นต้น ซึ่งหมายความว่าทุกครั้งที่ฉันต้องส่งเซิร์ฟเวอร์ว่าฉันกำลังทำอะไรอยู่เนื่องจากฉันเปิดห้องสนทนากับคนอื่นพวกเขาจำเป็นต้องรู้ว่าฉันกำลังทำอะไรอยู่ คล้ายกับกลไกการตอบกลับข้อความ whatsapp: แก้ไข # 2: ขณะนี้ควรกำหนดเวลางานที่เกิดซ้ำเกือบตลอดเวลาผ่านJobSchedulerAPI (หรือFirebaseJobDispatcherสำหรับ API ที่ต่ำกว่า) เพื่อป้องกันปัญหาการระบายแบตเตอรี่โดยสามารถอ่านได้ในส่วน Vitalsของการฝึกอบรม Android แก้ไข # 3: FirebaseJobDispatcher เลิกใช้งานแล้วและแทนที่ด้วยWorkmanagerซึ่งรวมคุณสมบัติของ JobScheduler ไว้ด้วย