2014-12-26 1 views
1

Если у вас давно запущенная программа, которая запускается как служба, вы должны запустить поток для выполнения работы, потому что служба работает в потоке основного приложения. То, что я не понимаю, заключается в том, что вы можете отметить важную услугу, указав «startForeground()», но эта черта привязана к службе (предположительно, к объекту службы) и не имеет ничего общего с потоками.Как startForeground влияет на потоки, запущенные в службе android?

Как эта черта влияет на долговечность потока, запущенного в вызове onStartCommand службы?

То, что я получаю, это то, как андроид не знает, как убить этот поток, поскольку это не тот поток, который помечен как передний план, а служба, которая помечена. Что делать, если я запускаю 5 потоков? Я не могу найти документацию, объясняющую взаимосвязь между приоритетом службы и приоритетом потоков, которые обслуживаются.

ответ

2

, потому что служба работает в потоке основного приложения

объекты не работают на потоки в Java. Способы делают. Методы жизненного цикла службы (например, onStartCommand()) вызываются в основном потоке приложения.

Как эта черта влияет на долговечность потока, запущенного в вызове onStartCommand службы?

startForeground() делает менее вероятным, что Android автоматически прекратит ваш процесс из-за старости, низкой памяти и т. Д.

как же андроид не знает, чтобы убить эту нить

Android не убивают темы на своем собственном. Android завершает процессы самостоятельно.

Что делать, если я начинаю 5 потоков?

Тогда вы начинаете 5 потоков.

Я не могу найти документацию, объясняющую взаимосвязь между приоритетом службы и приоритетом потоков, которые обслуживаются.

Они не имеют никакого отношения друг к другу. Вы не найдете никакой документации, объясняющей взаимосвязь между «приоритетом службы» и количеством волос авторов книг Android.

Кроме того, вы, кажется, сближаете долголетие и приоритет в отношении потоков, и они не имеют ничего общего друг с другом, хотя это скорее вещь Java, чем вещь Android.

+1

ahhh ключевой момент, который вы делаете, есть Android, который завершает процессы самостоятельно. Я думал, что это убьет только сервис, а не все приложение. Итак, что вы действительно делаете, важно отметить все приложение как важное, а не только сервис. – stu

+0

Я склонен согласиться с вами, потому что это имеет смысл, но этот http://developer.android.com/reference/android/app/Service.html упоминает об этом службу.но он также говорит: «Другие компоненты приложения, работающие в том же процессе, что и служба (например,« Активность »), могут, конечно, увеличить важность всего процесса, помимо важности самой службы. Это дает вам преимущество в отношении убийства, связанного с процессом в целом. – stu

Смежные вопросы