android - 当关闭应用程序时,android后台服务的后台服务停止"

  显示原文与译文双语对照的内容
60 2

我有一个下载程序项目,我使用一个服务类来管理下载任务并显示如下通知: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个回答

126 2

因为返回 START_STICKY 时,当应用程序关闭/终止所有的引用/值,所有的Intent/值将变为 null,因此 STICKY 服务将无法获得 Intent 值。

在应用程序杀死使用 return START_REDELIVER_INTENT 后继续服务

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

请看这里的问题

原作者:
...