Положите нить в переднем плане Service
Обычно весь VM убит, когда пользователь пойла приложения из списка недавних. Но в последних версиях Android, услуги переднего плана не убиты. (Благодаря Steve M, чтобы довести это изменение до моего сведения.) В более ранних версиях Android даже службы переднего плана были убиты. Это было considered a bug. К сожалению, Google печально известен тем, что неправильно закрывает проблемы как «устаревшие», поэтому нет способа узнать, когда это было фактически исправлено, за исключением тестирования разных устройств. (Или даже если это было намеренно исправлено вообще или случайно зафиксировано в результате каких-либо других изменений.) Я совершенно уверен, что услуги на переднем плане были убиты в Android 4.4. Они не убиты в Android 5.1, по крайней мере, на моих устройствах, включая ту, которая использовалась для работы 4.4. Но обратите внимание на комментарии к этому отчету об ошибках об обслуживании переднего плана в версиях 5.1 и 6.0. Может быть, это никогда не было действительно исправлено, и оно все еще попадало или промахивалось.
Обратите внимание, что независимо от того, убита ли виртуальная машина, всегда будет вызываться onTaskRemoved(...)
службы переднего плана.
Вы можете проверить, является ли VM убивается, поместив этот код в деятельности (по крайней мере, в моем тестировании.):
private static final long vmInitTime = System.currentTimeMillis();
// in onCreate(...)
((TextView) findViewById(R.id.timeView)).setText(new Date(vmInitTime).toString());
Отображаемое время не изменится до тех пор, как же VM работает , (Или, если быть точнее, до тех пор, пока существует то же определение вашего класса активности. На практике, ClassLoader
имеет такое же время жизни, что и VM.)
«также эта нить изменяет значения на странице результатов» - после того, как пользователь очистит вашу задачу, нет «страницы результатов». Эта деятельность будет уничтожена. – CommonsWare