Saya membuat aplikasi yang perlu terus melacak lokasi pengguna setiap saat. Itu juga dapat bekerja dalam mode latar belakang. Masalahnya adalah ketika saya menggunakan aplikasi lain beberapa kali. Aplikasi lain mungkin menyebabkan banyak memori. Aplikasi saya terkadang dihentikan oleh sistem. Tidak ada log kerusakan. Jadi saya ingin tahu beberapa alasannya. Apakah ada cara untuk menghindari aplikasi saya dihentikan? Sangat menghargai bantuan Anda.
Bagaimana cara menghindari aplikasi saya dihentikan, ketika sedang berjalan dan melacak lokasi saya di latar belakang?
Jawaban (2)
Anda tidak dapat mencegah aplikasi tersebut dihentikan, namun hal terbaik yang dapat Anda lakukan untuk menjaganya tetap hidup adalah saat aplikasi masuk di latar belakang, bebaskan memori sebanyak yang Anda bisa - gambar, file yang di-cache... Hentikan juga pengatur waktu yang sedang berjalan, pembaruan UI dan semuanya memakan waktu. Dengan mengikuti aturan MVC, implementasi terbaik adalah membuat kelas (model) terpisah yang hanya bertanggung jawab untuk pembaruan lokasi (dengan CLLocationManager
di dalamnya, dan kelas tersebut mengimplementasikan metode delegasinya). Jadi satu-satunya hal di latar belakang yang harus Anda lakukan adalah mengumpulkan titik lokasi yang diterima oleh CLLocationManager
dan tidak ada yang lain. Terapkan juga metode -applicationWillTerminate
di dalam diri Anda AppDelegate
. Metode ini dipanggil hanya ketika aplikasi berada di latar belakang dan akan dihentikan (baik oleh OS atau pengguna) dan di dalamnya tetap mempertahankan titik lokasi di CoreData misalnya atau bagaimanapun Anda melakukannya... Saya memiliki pendekatan seperti itu dan sejauh ini aplikasi saya telah hidup selama 24 jam (tentu saja dengan pengisian daya) tanpa dimatikan.
Aplikasi yang berjalan di latar belakang bergantung pada penggunaan memori, masa pakai baterai, dll. Ketika ada banyak aplikasi yang berjalan di latar belakang, aplikasi Anda mungkin dihentikan. Saya rasa Anda tidak dapat menjalankan aplikasi Anda secara permanen di latar belakang.