0

ich ein Downloader-App-Projekt habe, und ich bin mit einer Service-Klasse zum Download zur Verwaltung von Aufgaben und zeigen Benachrichtigungen wie folgt aus: enter image description here das Problem: wenn ich in der Nähe App von den letzten Apps durch Wischen wird der Dienst gestoppt. Ich kann startForeground für Benachrichtigungen nicht verwenden, da ich mehrere Benachrichtigungen in einem Dienst habe. und ich mag notify.setAutoCancel(true) funktioniert gut. hier ist AndroidManifest.xml Code:Hintergrunddienst für Multitask-Downloader stoppt, wenn die Nähe App von „recent apps“

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); 
} 

und hier ist 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; 
} 

, wie kann ich es beheben

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

hier Dienst starten?

+0

können Sie den Dienst starten wieder 'onTaskRemoved' verwenden tötet. – SripadRaj

+0

@SripadRaj, wenn ich das tue, werde ich Aufgaben von Downloads verlieren. Service läuft und arbeitet. –

Antwort

1

Wie Sie START_STICKY dieser Dienst zurückkehren stoppt, wenn Sie in der Nähe/die App töten, weil nach der App, alle Referenz geschlossen/Wert null für alle Intent als Variablen als auch werden wird und so STICKY Dienst nicht in der Lage Intent zu bekommen Wert.

Um weiterhin Dienst nach ca. return START_REDELIVER_INTENT

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

Siehe gleiche Problem Here

+0

tnx, ich denke 'START_CONTINUATION_MASK' ist besser. –

+1

du hast das gerne gelesen http://stackoverflow.com/questions/31186478/app-isnt-reponsing-becycle-of-service-start-continuation-mask –

+0

Ja hast du recht, wenn ich START_REDELIVER_INTENT benutze, verliere ich Aufgaben und Quelle, der Dienst wird neu gestartet, gibt es eine Möglichkeit, es ohne Neustart zu beheben. tnx bro –

Verwandte Themen