直到现在(在 Android Oreo 之前),我一直在通过 处理从应用程序最近删除Service.onTaskRemoved()
,例如:
public class OnAppRemovedFromRecentListener extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_NOT_STICKY;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
// there I am handling removing from recents
}
}
但是现在当我在 Android Oreo 上运行应用程序时,我无法以任何方式实现相同的行为。尝试了2种方法:
- 如果仍在使用
Service
,则在应用程序处于后台时不活动一段时间后,服务将被销毁,然后如果用户从最近删除的应用程序onTaskRemoved
不会被调用。 - 如果通过 then 切换
Service
并JobIntentService
启动此服务,JobIntentServiceLauncher.enqueueWork
则 OnAppRemovedFromRecentListener 几乎立即被销毁,并且在从最近onTaskRemoved
删除应用程序时也不会调用
有谁知道如何检测从 Android Oreo 上的最新应用程序中删除我的应用程序,这将始终有效?