ฉันกำลังสร้างแอปที่ต้องติดตามตำแหน่งของผู้ใช้ทุกครั้ง นอกจากนี้ยังสามารถทำงานในโหมดพื้นหลังได้อีกด้วย ปัญหาคือ เมื่อฉันใช้แอปอื่นหลายครั้ง แอพอื่นอาจทำให้มีหน่วยความจำมาก บางครั้งแอพของฉันถูกยกเลิกโดยระบบ ไม่มีบันทึกข้อขัดข้อง เลยอยากทราบเหตุผลบางประการ มีวิธีใดบ้างที่จะหลีกเลี่ยงไม่ให้แอปของฉันถูกยกเลิก? ขอบคุณมากสำหรับความช่วยเหลือของคุณ
จะหลีกเลี่ยงไม่ให้แอปของฉันยุติการทำงานได้อย่างไร เมื่อแอปทำงานและติดตามตำแหน่งของฉันในเบื้องหลัง
คำตอบ (2)
คุณไม่สามารถป้องกันไม่ให้แอปถูกยกเลิกได้ แต่สิ่งที่คุณทำได้ดีที่สุดเพื่อให้แอปยังคงอยู่คือเมื่อมันเข้าสู่พื้นหลังโดยว่างหน่วยความจำมากที่สุดเท่าที่จะทำได้ - รูปภาพที่แคชไว้ ไฟล์... และหยุดตัวจับเวลาที่ทำงานอยู่ อัปเดต UI และทุกอย่างใช้เวลานาน โดยการปฏิบัติตามกฎ MVC การใช้งานที่ดีที่สุดคือการสร้างคลาส (โมเดล) แยกต่างหากที่รับผิดชอบเฉพาะการอัปเดตตำแหน่ง (โดยมี CLLocationManager
อยู่ข้างใน และคลาสใช้วิธีการมอบหมาย) ดังนั้นสิ่งเดียวที่คุณควรทำคือรวบรวมคะแนนตำแหน่งที่ได้รับจาก CLLocationManager
และไม่มีอะไรอื่นอีก ใช้วิธีการ -applicationWillTerminate
ในตัวคุณ AppDelegate
ด้วย วิธีการนี้ถูกเรียกเฉพาะเมื่อแอปอยู่ในพื้นหลังและมันจะถูกยกเลิก (โดยระบบปฏิบัติการหรือผู้ใช้) และภายในคงจุดตำแหน่งใน CoreData ไว้หรืออย่างไรก็ตามคุณทำ ... ฉันมีแนวทางดังกล่าวและ จนถึงตอนนี้แอปของฉันใช้งานได้ 24 ชั่วโมง (แน่นอนว่าต้องชาร์จด้วย) โดยไม่ถูกฆ่า
แอพที่ทำงานอยู่เบื้องหลังขึ้นอยู่กับการใช้งานหน่วยความจำ อายุการใช้งานแบตเตอรี่ ฯลฯ เมื่อมีแอพจำนวนมากทำงานในพื้นหลัง แอพของคุณอาจถูกยกเลิก ฉันไม่คิดว่าคุณจะสามารถรันแอพของคุณอย่างถาวรในพื้นหลังได้