Android 服务 运行 上的单独进程未创建

Android service running on separate process is not Created

我已经按照 radiolondra57 从 Intent Service not working in doze mode 制定的步骤在单独的进程上创建服务 运行。 我遇到了一个问题,即在 startService 之后永远不会调用此服务的 onCreate。这是我的设置:

清单:

    <service
        android:name=".service.Smart113MainService"
        android:enabled="true"
        android:exported="true"
        android:process=":antiDozeProcessName"
        android:label="LocationService">
    </service>

在第一个Activity的onCreate中调用了这个方法:(是的,测试phone的版本等于"O" :))

 private void startServices() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        startService(new Intent(this, Smart113MainService.class));
    } 
 }

服务:

    @Override
public void onCreate() {
    super.onCreate();
    doingSomeStuff();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    startForeground(Smart113NotificationFactory.locationSharingNotificationId, notification.logIntoAppNotification(this).build());
    doingMoreStuff();
    return START_STICKY;
}

这是我没有对正在发送的 Intent 设置操作的问题吗?这实际上是我在代码中看到的唯一区别..

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
  startService(new Intent(this, Smart113MainService.class));
}
else {
  startForegroundService(new Intent(this, Smart113MainService.class));
}

startForeground 代码移动到 onCreate()

@Override
public void onCreate() {
    ...
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        startForeground(NOTIFICATION_ID, notification);
    }
    ...
}

删除通知onDestroy()

@Override
public void onDestroy() {
    ...
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
          stopForeground(true); //true will remove notification
    }
    ...
}

更新

您没有在不同的进程中获得调试点,因为您正在从附加调试器中选择主进程。 Select 正确的调试过程。