我的问题是,尽管我正在运行前台服务,但是在“开发人员选项”中的“正在运行的服务”中看不到它。以下是详细信息。
我正在通过活动启动服务。
Intent intent = new Intent(this.getContext(), PilotForegroundService.class);
intent.putExtra(CALLSIGN, callsign);
this.getContext().startService(intent);
在onStartCommand
内部,我将其设置为前台服务(通过调用startForeground(...)
并启动一个永久运行的AsyncTask
(或直到AsyncTask
中满足条件的情况下)) 。onStartCommand
的代码如下所示:
public int onStartCommand(Intent intent, int flags, int startId) {
String callsign = intent.getExtras().getString(PilotFragment.CALLSIGN);
startForeground(PilotForegroundAsyncTask.PERSISTENT_ONGOING_NOTIF_ID, getNotification(callsign));
pilotAsyncTask = new PilotForegroundAsyncTask(this);
pilotAsyncTask.execute(callsign);
return Service.START_STICKY;
}
我可以确认AsyncTask
保持运行状态,因为我进行了相应的跟踪(定期执行操作,睡眠30秒钟并重复)。
我的问题是,为什么在真实设备上运行时在“运行服务”中-我在Galaxy S7 Oreo上尝试过-在开发人员选项的“运行服务”中看不到我的服务。我看到了该过程(即使我杀死了发起的Activity),但没有看到Service。
在模拟器(相同的API级别)上,大多数情况下都可以正常工作。有时它也没有显示。
我已经检查了a relevant question in SO,但是我没有使用IntentService
。我要扩展一个很好的Service
。
预先感谢