จะหลีกเลี่ยงไม่ให้แอปของฉันยุติการทำงานได้อย่างไร เมื่อแอปทำงานและติดตามตำแหน่งของฉันในเบื้องหลัง

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


person TK189    schedule 14.06.2012    source แหล่งที่มา


คำตอบ (2)


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

person graver    schedule 14.06.2012

แอพที่ทำงานอยู่เบื้องหลังขึ้นอยู่กับการใช้งานหน่วยความจำ อายุการใช้งานแบตเตอรี่ ฯลฯ เมื่อมีแอพจำนวนมากทำงานในพื้นหลัง แอพของคุณอาจถูกยกเลิก ฉันไม่คิดว่าคุณจะสามารถรันแอพของคุณอย่างถาวรในพื้นหลังได้

person Nuzhat Zari    schedule 14.06.2012
comment
ขอบคุณสำหรับการตอบกลับอย่างรวดเร็ว หากแอปของฉันใช้หน่วยความจำน้อยกว่า จะลดโอกาสที่จะถูกยุติหรือไม่ - person TK189; 14.06.2012
comment
และคุณสามารถแจ้งเตือนผู้ใช้ทุกครั้งที่มีการเปลี่ยนแปลงตำแหน่ง ตามลิงค์นี้:stackoverflow.com/questions/3775730/ - person Nuzhat Zari; 14.06.2012