Обработка собственных потоков при выводе приложения на передний план
Мы портировали немного сложное приложение C\C++ на Android. Немного функциональности достигается с помощью потоков Java, и много других функций достигаются с помощью собственных потоков на стороне C. Все нативные потоки создаются с помощью вызовов pthread_create(). Мы также используем много статических и глобальных переменных во всех наших собственных потоках. Мы также используем Posix Semaphores для синхронизации потоков. Наше приложение работает должным образом, пока оно находится на переднем плане, и у нас возникают проблемы, когда оно отправляется в фоновый режим, а затем возобновляется.
Я хотел бы знать, как обрабатываются потоки Java и собственные потоки, когда приложение отправляется в фоновый режим. Из различных постов я знаю, что приложение в фоновом режиме может быть убито в любое время ОС Android. В настоящее время,
- Я хочу знать, уничтожает ли ОС Android все приложение или же оно может убить только несколько выбранных потоков приложения? (Когда наше приложение запущено, оно будет работать с 10-15 потоками).
- Являются ли потоки Java в равной степени восприимчивыми, как и нативные потоки, когда ОС их решает уничтожить? Когда они принадлежат одному приложению.
- Допустим, приложение отправляется в фоновый режим, просто перетаскивая экран уведомлений, и в течение одной-двух секунд экран уведомлений перетаскивается вверх, в результате чего приложение выходит на передний план в течение секунды (очень быстро). В этом сценарии, если предположить, что системе не хватает памяти и уровень заряда батареи достаточен, будет ли ОС уничтожена какими-либо потоками или порциями приложения?
- Когда приложение вернется на передний план, будут ли глобальные переменные и статические переменные собственных потоков сброшены в 0? или они будут хранить свои предыдущие значения (значения, которые они хранили непосредственно перед отправкой на задний план)? Предполагая, что поток не был убит ОС.
- Предполагая, что другие приложения не работают в фоновом режиме, и только наше приложение было перемещено в фоновый режим нажатием кнопки "Домой", а затем через несколько секунд (5 или менее), если приложение выводится на передний план, есть вероятность, что любое ОС будет уничтожать потоки приложения (при условии, что наше приложение является единственным запущенным приложением, и никакие другие приложения в фоновом режиме и уровень заряда батареи не превышают 80%)
Я прошел по ссылке ниже, но они не ответили на все мои вопросы убедительно. Так что выкладываю мой вопрос для убедительного ответа.