Я разрабатываю приложение для компании, которая хочет использовать телефоны Android в качестве постоянной информации о местоположении пользователя. Я создал LocationListener и requestLocationUpdates, создавая кешированный процесс, который сохраняет данные в файл. НО, как правило, система убивает эти процессы, чтобы освободить место для других процессов, и я хочу отрицать это.Стойкие кэшированные процессы в android, howto?
На словах я хочу, чтобы эти процессы кэширования были постоянными и сопротивлялись уничтожению команд (или прекратили выполнение команд kill из системы). Уже попробовал деятельность но безрезультатно (хранится сбой приложения)
Сейчас система Somethin так:
LocationListener listener = new LocationListener(){
onLocationChanged(){useData;/*congestion avoidance function*/}
onStatusChanged()
{
if(offline){requestLocationUpdate(/*with new time, to avoid congestion*/)}
}
}
Это очень грубый проект, надеюсь, что вы можете получить вместе с ним. между ними есть некоторые функции, чтобы избежать утечки батареи и перегрузки памяти.
Процесс работает нормально, и иногда он постоянный. Но в некоторых случаях использование телефона убивает этот процесс, и я хочу этого избежать.
Я относительно новичок в программировании для Android, но имею опыт в других системах.
Заранее спасибо
Вы не можете остановить убийство. Если Android решит, что ему нужны ресурсы, которые вы занимаете, он убьет вас. Вы можете увеличить [важность] (http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle), будучи передним сервисом, попросите вас возобновить работу, если вы были убиты ('START_STICKY') и добавьте код, который регулярно пытается перезапустить службу (например,' AlarmManager'). Есть [несколько] (http://stackoverflow.com/q/17005837) [ответы] (http://stackoverflow.com/q/4708827), которые уже объясняют, как это работает. – zapl