2015-11-11 4 views
4

В моем приложении Я пытаюсь загрузить изображения, даже если пользователь заставил его остановить его и выйти из него, используя недавний диспетчер приложений, прокручивая. Почему я хочу это поведение, у него есть только одна причина, и что:Sticky Service и Intent Service убивают, когда приложение уничтожено.

Потому что я хочу пользователя, чтобы остановить загрузку с моей кнопки, приведенной в деятельности

Так Для этого я сделал асинхронной задачи в первое место, он работал красиво, даже если активность уничтожена, но когда я уничтожаю/убиваю приложение с помощью нового приложения, приложение убивается, и поэтому служба

Затем я перенес свою задачу асинхронного доступа в Службу, которая липкая, Я думал, что он не должен разрушаться, когда пользователь закрывает приложение из последних списков приложений, но служба останавливается. хотя несколько раз он начинается снова, но по какой-то причине я просто хочу, чтобы он не останавливался и не загружался, как в магазине google play. Что бы вы ни делали, вы не можете остановить загрузку приложения до тех пор, пока не будете использовать кнопку остановки в приложении Google Play Store.

Затем я прочитал о IntentService, о намерениях службы я прочитал, что,

Вы можете запустить пристальный сервис и забыть об этом, так как он перестает себя после завершения задачи.

Так что, хотя это то, что не может быть убит даже пользователь останавливает его или закройте приложение из списка последних приложений, проводя как намерение служба будет выполнять свою задачу и остановил бы себя

Но Все в вену. Я много читал об услуге и о том, как вылечить службу от того, чтобы ее не убивали. Я узнал о начале службы в качестве подполья.

Но какие другие способы используют другие приложения высшего класса, чтобы поддерживать фоном все время, например приложения для безопасности, приложения на основе gps и антивирусные приложения, службы которых постоянно работают на фоне. Вы можете изучить приложение app google play store с обычным приложением, вы можете начать загрузку любого приложения и выйти из приложения для магазина воспроизведения, даже из последнего лотка для приложений, но он будет продолжать загружаться до тех пор, пока вы не перейдете к уведомлению об уведомлении, нажмите переместился на место, где вы, наконец, увидите кнопку остановки загрузки, чтобы остановить загрузку приложения.

Так как я могу достичь этого? что не так с сервисом или что еще я могу использовать для получения того же поведения, что и в магазине google play.

Прошу вас, руководствоваться. Ваши комментарии и обсуждения будут оценены.

+1

Тогда, как вы решить эту проблему? –

+0

Очень хороший вопрос (y), я думал об одном и том же. –

ответ

0

Что вам нужно, это ForegroundService. В руководстве разработчика Android об услугах указано, что:

Служба переднего плана - это сервис, который считается тем, о чем человек активно осведомлен и, следовательно, не является кандидатом на то, чтобы система могла убивать при низком уровне памяти. Служба переднего плана должна предоставлять уведомление для строки состояния, которая помещается под заголовком «Текущий», что означает, что уведомление не может быть отклонено, если служба не остановлена ​​или не удалена с переднего плана.

+0

Я знаю об этом, но я хотел узнать по-другому? и как работает приложение для воспроизведения в Google Play –

+0

Посмотрите, любое уведомление, которое вы не можете удалить из панели уведомлений, является ForegroundService. Это означает, что Google Play или любые другие неуправляемые уведомления - это Foreground Services. –

+0

Неправда. В уведомлении может быть установлен флаг FLAG_ONGOING_EVENT, который предотвратит его увольнение. Это не обязательно связано с сервисом. – Kuffs

1

Похоже, что вы хотите запустить службу в отдельном процессе из основного приложения, чтобы оно не было убито, если приложение было удалено из списка «Недавние задачи».

Это стало возможным с помощью «Process» атрибут объяснено в документации здесь: http://developer.android.com/guide/topics/manifest/service-element.html#proc

+0

Я уже это сделал, но он перестает загружать процесс, его значение убивает службу. –

+0

Скорее всего, вы делаете что-то неправильно. Какое имя процесса вы используете? – Kuffs

+0

Я просто использую asynctask в этой службе –

0

Вы можете использовать возвращение возврата START_STICKY в onStartCommand в службе

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