我遵循了Intent Service not working in doze mode中radiolondra57所做的步骤,以创建在单独的进程上运行的服务。 我有一个问题,就是在startService之后,永远不会调用此服务的onCreate。这是我的设置:
清单:
<service
android:name=".service.Smart113MainService"
android:enabled="true"
android:exported="true"
android:process=":antiDozeProcessName"
android:label="LocationService">
</service>
在第一个Activity的onCreate中,此方法称为:(是的,测试电话的版本等于“ 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设置操作的问题吗?实际上,这是我在代码中唯一能看到的区别。
答案 0 :(得分:0)
OffsetDateTime
将offsetDateTime.atZoneSameInstant(ZoneId.of("Asia/Kolkata")).toOffsetDateTime();
代码移至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);
}
...
}
更新
您没有在其他进程中获得调试点,因为您正在从附加调试器中选择主进程。选择正确的进程进行调试。