คำถามติดแท็ก alarmmanager

9
ตัวอย่างตัวจัดการสัญญาณเตือน
ฉันต้องการใช้ฟังก์ชั่นกำหนดเวลาในโครงการของฉัน ดังนั้นฉันจึง Googled สำหรับโปรแกรม Alarm manager แต่ฉันไม่สามารถหาตัวอย่างใด ๆ ได้ ทุกคนสามารถช่วยฉันด้วยโปรแกรมจัดการปลุกพื้นฐานได้หรือไม่?

10
จะตรวจสอบว่า AlarmManager มีการตั้งปลุกได้อย่างไร?
เมื่อแอพของฉันเริ่มต้นฉันต้องการให้มันตรวจสอบว่ามีการตั้งค่าและเรียกใช้สัญญาณเตือน (ลงทะเบียนผ่าน AlarmManager) โดยเฉพาะหรือไม่ ผลลัพธ์จาก google ดูเหมือนจะบ่งบอกว่าไม่มีทางทำเช่นนี้ ยังคงถูกต้องหรือไม่ ฉันต้องทำการตรวจสอบนี้เพื่อให้คำแนะนำผู้ใช้ก่อนที่จะดำเนินการใด ๆ เพื่อสร้างการเตือนภัยใหม่

9
โทรหา startActivity () จากด้านนอกกิจกรรมหรือไม่
ฉันกำลังใช้AlarmManagerเพื่อกระตุ้นความตั้งใจที่ถ่ายทอดสัญญาณ ต่อไปนี้เป็นรหัสของฉัน: AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(this, Wakeup.class); try { PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0); Long elapsed += // sleep time; mgr.set(AlarmManager.RTC_WAKEUP, elapsed, pi); } catch(Exception r) { Log.v(TAG, "RunTimeException: " + r); } ฉันเรียกรหัสนี้จาก an Activityดังนั้นฉันไม่รู้ว่าฉันจะได้รับข้อผิดพลาดต่อไปนี้ ... ERROR/AndroidRuntime(7557): java.lang.RuntimeException: Unable to start …

5
“ requestCode” ใช้สำหรับอะไรใน PendingIntent
พื้นหลัง: ฉันใช้ PendingIntent สำหรับการเตือนผ่าน AlarmManager ปัญหา: ตอนแรกฉันคิดว่าในการยกเลิกอันก่อนหน้านี้ฉันต้องระบุ requestCode ที่แน่นอนที่ฉันเคยใช้มาก่อนเพื่อเริ่มการปลุก แต่แล้วฉันก็พบว่าฉันคิดผิดตามที่API การยกเลิกบอก: ลบสัญญาณเตือนใด ๆ ที่มีเจตนาที่ตรงกัน การเตือนภัยไม่ว่าประเภทใดก็ตามที่มี Intent ตรงกับการเตือนนี้ (ตามที่กำหนดโดย filterEquals (Intent)) จะถูกยกเลิก ดูที่ " filterEquals " เอกสารระบุว่า: ตรวจสอบว่าเจตนาสองอย่างเหมือนกันสำหรับวัตถุประสงค์ของการแก้ไขเจตนา (การกรอง) หรือไม่ นั่นคือถ้าการกระทำข้อมูลประเภทคลาสและหมวดหมู่เหมือนกัน ข้อมูลนี้ไม่ได้เปรียบเทียบข้อมูลเพิ่มเติมใด ๆ ที่รวมอยู่ใน Intent เลยไม่เข้าใจว่า "requestCode" มีไว้เพื่ออะไร ... คำถาม: "requestCode" ใช้ทำอะไร จะเกิดอะไรขึ้นถ้าฉันสร้างการเตือนภัยหลายรายการโดยใช้ "requestCode" เดียวกัน พวกเขาลบล้างกันและกัน?

6
Android: วิธีใช้ AlarmManager
ฉันต้องการทริกเกอร์บล็อกของโค้ดหลังจาก 20 นาทีจากAlarmManagerการตั้งค่า ใครช่วยแสดงโค้ดตัวอย่างวิธีใช้AlarmManagerใน ِ Android ให้หน่อยได้ไหม ฉันเล่นกับโค้ดมาสองสามวันแล้วและมันก็ใช้ไม่ได้

5
Android AlarmManager - RTC_WAKEUP เทียบกับ ELAPSED_REALTIME_WAKEUP
ใครสามารถอธิบายความแตกต่างระหว่างAlarmManager.RTC_WAKEUPและAlarmManager.ELAPSED_REALTIME_WAKEUP? ฉันได้อ่านเอกสารแล้ว แต่ก็ยังไม่เข้าใจความหมายของการใช้เอกสารอื่น ๆ รหัสตัวอย่าง: alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, scheduledAlarmTime, pendingIntent); alarmManager.set(AlarmManager.RTC_WAKEUP, scheduledAlarmTime, pendingIntent); โค้ดสองบรรทัดจะแตกต่างกันอย่างไร โค้ดสองบรรทัดนั้นจะทำงานสัมพันธ์กันเมื่อใด ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ

14
AlarmManager ไม่ทำงานในอุปกรณ์หลายเครื่อง
แอพของฉันใช้ AlarmManager และใช้งานได้ตั้งแต่ 4 ปีที่แล้ว แต่ฉันสังเกตเห็นว่าอุปกรณ์บางอย่างเริ่มทำงานล้มเหลว ฉันค่อนข้างแน่ใจว่ารหัสถูกต้อง (ฉันใช้ WakefulBroadcastReceiver และ setExactAndAllowWhileIdle สำหรับอุปกรณ์ที่มี Doze) เนื่องจากทำงานได้อย่างสมบูรณ์บนอุปกรณ์ Nexus แต่ล้มเหลวในอุปกรณ์ของผู้ผลิตบางราย (Huawei, Xiaomi ... ) ตัวอย่างเช่นอุปกรณ์ Huawei มีตัวจัดการแบตเตอรี่ชนิดหนึ่งที่ฆ่าแอปและเมื่อแอปถูกฆ่าการเตือนตามกำหนดเวลาจะถูกยกเลิก ดังนั้นการตั้งค่าแอปเป็น "ป้องกัน" ในตัวจัดการแบตเตอรี่ของ Huawei ช่วยแก้ปัญหาได้ แต่เมื่อไม่นานมานี้ฉันสังเกตเห็นว่ามันใช้ไม่ได้กับอุปกรณ์อื่น ๆ : Xiaomi, Samsung (อาจเกี่ยวข้องกับ "Smart Manager" ใหม่?) ... ดูเหมือนว่าพฤติกรรมนี้จะกลายเป็นมาตรฐาน: เพื่อฆ่าแอปพื้นหลัง ใครรู้อะไรเกี่ยวกับเรื่องนี้ วิธีใดเพื่อให้แน่ใจว่าสัญญาณเตือนถูกลั่น? แก้ไข: ปัญหานี้เกิดจาก "ตัวประหยัดแบตเตอรี่" ที่เพิ่มโดยผู้ผลิตที่แตกต่างกัน ข้อมูลเพิ่มเติมที่นี่: https://dontkillmyapp.com/

6
จะตั้งเวลาปลุกอย่างไรในเวลาที่แน่นอนหลังจากข้อ จำกัด ใหม่ล่าสุดทั้งหมดบน Android
หมายเหตุ: ฉันลองใช้วิธีแก้ไขปัญหาต่าง ๆ ที่เขียนเกี่ยวกับที่นี่ใน StackOverflow (ตัวอย่างที่นี่ ) โปรดอย่าปิดสิ่งนี้โดยไม่ตรวจสอบว่าโซลูชันของคุณจากสิ่งที่คุณพบว่าทำงานได้โดยใช้แบบทดสอบที่ฉันเขียนด้านล่าง พื้นหลัง มีความต้องการในแอพที่ผู้ใช้ตั้งเตือนเพื่อกำหนดเวลาในเวลาที่กำหนดดังนั้นเมื่อแอพได้รับการทริกเกอร์ในเวลานี้มันจะทำสิ่งเล็ก ๆ ในพื้นหลัง (เพียงการดำเนินการแบบสอบถาม DB) และแสดง การแจ้งเตือนง่าย ๆ ที่จะบอกเกี่ยวกับการแจ้งเตือน ในอดีตที่ผ่านมาฉันใช้รหัสง่าย ๆ เพื่อกำหนดสิ่งที่จะกำหนดเวลาค่อนข้างเฉพาะ: val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager val pendingIntent = PendingIntent.getBroadcast(context, requestId, Intent(context, AlarmReceiver::class.java), PendingIntent.FLAG_UPDATE_CURRENT) when { VERSION.SDK_INT >= VERSION_CODES.KITKAT -> alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeToTrigger, pendingIntent) else -> alarmManager.set(AlarmManager.RTC_WAKEUP, timeToTrigger, pendingIntent) } …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.