0

у меня есть проект, загрузчик приложений и я использую класс обслуживания для управления задачами загрузки и показывать уведомлениями, как это: enter image description here проблемы: когда я закрываю приложение из последних приложений путем прокрутки, Служба будет остановлена. Я не могу использовать startForeground для уведомлений, потому что у меня есть несколько уведомлений в одной службе. и мне нравится notify.setAutoCancel(true) отлично работает. здесь AndroidManifest.xml код:фона сервиса для многозадачного загрузчика останавливается, когда близко приложение от «последних приложений»

<service android:name=".Downloader" android:exported="false" android:enabled="true" 
android:stopWithTask="false" /> 

здесь начинает обслуживание:

public static void intentDownload(Context context , FileInfo info) { 
    Intent intent = new Intent(context, Downloader.class); 
    intent.setAction(ACTION_DOWNLOAD); 
    intent.putExtra(EXTRA_TAG, info.Tag); 
    intent.putExtra(EXTRA_APP_INFO, info); 
    context.startService(intent); 
} 

и вот onStartCommand:

public int onStartCommand(Intent intent, int flags, int startId) { 
    if (intent != null) { 
     String action = intent.getAction(); 
     FileInfo fInfo; 
     String tag = intent.getStringExtra(EXTRA_TAG); 
     switch (action) { 
      case ACTION_DOWNLOAD: 
       fInfo = (FileInfo) intent.getSerializableExtra(EXTRA_APP_INFO); 
       download(fInfo); 
       break; 
      case ACTION_PAUSE: 
       fInfo = (FileInfo) intent.getSerializableExtra(EXTRA_APP_INFO); 
       pause(fInfo); 
       break; 
      case ACTION_CANCEL: 
       cancel(tag); 
       break; 
      case ACTION_PAUSE_ALL: 
       pauseAll(); 
       break; 
      case ACTION_CANCEL_ALL: 
       cancelAll(); 
       break; 
     } 
    } 
    return Service.START_STICKY; 
} 

как я могу это исправить?!

+0

Вы можете снова запустить службу 'onTaskRemoved'. – SripadRaj

+0

@SripadRaj, если я это сделаю, я потеряю задачи загрузки. служба работает и работает. –

ответ

1

Как вы возвращаете START_STICKY эта служба остановится, когда вы закрываете/убить приложение, потому что после того, как приложение закрыто все Reference/Value будет null для всех намерений, а также переменных и поэтому STICKY служба не будет в состоянии получить Intent стоимость.

Чтобы продолжить службу после того, как приложение убивает использовать return START_REDELIVER_INTENT

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_REDELIVER_INTENT; 
} 

Смотрите такая же проблема Here

+0

tnx, я думаю, что «START_CONTINUATION_MASK» лучше. –

+1

Вы действительно хотели прочитать это http://stackoverflow.com/questions/31186478/app-isnt-responding-because-of-service-start-continuation-mask –

+0

Да, вы правы, когда я использую START_REDELIVER_INTENT, я теряю задачи и source, служба снова запустится, есть ли способ исправить ее без перезапуска. tnx bro –

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