0

다운로더 앱 프로젝트가 있고 다운로드 작업을 관리하고 다음과 같은 알림을 표시하기 위해 서비스 클래스를 사용하고 있습니다 : enter image description here 문제 : 내가 닫을 때 최근 앱에서 스 와이프하여 앱을 중지하면 서비스가 중지됩니다. 하나의 서비스에 여러 알림이 있기 때문에 알림에 startForeground을 사용할 수 없습니다. 그리고 나는 notify.setAutoCancel(true)이 잘 작동하는 것을 좋아한다. 여기 멀티 태스킹 다운로더에 대한 백그라운드 서비스가 "최근 앱"의 닫기 앱일 때 중지

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

서비스 시작 : 여기 는 AndroidManifest.xml에 코드

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

를 참조 사용 사망 후

서비스를 계속합니다. – SripadRaj

+0

@SripadRaj, 이렇게하면 다운로드 작업을 잃게됩니다. 서비스가 실행 중이고 작동 중입니다. –

답변

1

당신이 START_STICKY을 반환하는 당신이 가까운/응용 프로그램을 죽일 때마다 앱이 모든 기준을 닫은 후/값이 모두 의도에 대한 null되기 때문에이 서비스는 변수뿐만 아니라 중지 등 STICKY 서비스는 의도를 얻을 수하지 않습니다 값. 응용 프로그램은

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

return START_REDELIVER_INTENT 당신은`다시 onTaskRemoved`을 서비스를 시작할 수 있습니다 같은 문제 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를 사용하면 작업을 잃고 소스, 서비스가 다시 시작되면 다시 시작하지 않고 문제를 해결할 수있는 방법이 있습니까? tnx bro –