2016-12-21 3 views
-2

Я заметил, что когда я заканчиваю свое приложение окончательно, метод runInBackGround класса MultiplyTask перестает работать. Он работает, когда активность находится в фазе STOP или PAUSE, но когда я закрываю свое приложение, метод заканчивается (это цикл, созданный с циклом while(true) {...}). Как может, например, отправлять уведомления Whatsapp, хотя он закрыт? Я хочу создать подобную вещь. Благодаря!Android: Запуск приложения, когда он окончательно закрыт

ответ

0

Когда приложение будет закрыто, весь код перестанет работать. Если вы хотите выполнить пока приложение открыто и продолжить выполнение кода, пока приложение закрыто, вы хотите посмотреть на using a Service.

Ознакомьтесь с документацией Сервиса, и мы надеемся, это то, что вы ищете , Службы также убиваются, когда ваше приложение закрыто, но с использованием возвращаемого значения START_STICKY вы можете убедиться, что ваша служба перезапускается после завершения.

ИЗМЕНИТЬ С Дополнительная информация:

<service 
    android:name="MyService" /> 

Добавьте выше вашего AndroidManifest.xml

public class MyService extends Service { 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
      // This is where you would place your code that you want in the background 
      // Putting your while loop here will make sure it runs when the app is closed 
      return Service.START_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     //TODO for communication return IBinder implementation 
    return null; 
    } 
} 

Создайте новый класс с указанным кодом.

Intent i= new Intent(context, MyService.class); 
startService(i); 

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

Надеюсь, это поможет!

+0

Как я могу использовать этот START_STICKY? – Tosch

+0

@Tosch Посмотреть мой отредактированный пост –

+0

Я решил свою проблему, спасибо! – Tosch

0

Asynctask идеально подходит для короткой работы, которые необходимо выполнять в фоновом режиме. Обычно Asyntask реализуется как подкласс класса активности, который уничтожается, когда приложение закрывается. Также он взаимодействует с потоком пользовательского интерфейса в некоторых точках ... так что ему нужно, чтобы активность была в памяти ... Для продолжительной работы Сервис лучше. Некоторые приложения уведомляют пользователя, даже если они не запущены. Фактически, у них есть одна или несколько служб, работающих в фоновом режиме. Вы можете увидеть их в меню настроек телефона-> приложений. Исследование this для получения дополнительной информации об услугах.

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