【问题标题】:How to detect app is removed from recents (Overview screen) on Android Oreo?如何检测应用程序已从 Android Oreo 上的最近访问(概览屏幕)中删除?
【发布时间】:2018-01-30 16:11:42
【问题描述】:

直到现在(在 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 种方法:

  1. 如果仍在使用Service,那么当应用处于后台时,服务会在一段时间不活动后被销毁,然后如果用户从最近的应用中删除应用,onTaskRemoved 不会被调用。
  2. 如果从 Service 切换到 JobIntentService 并通过 JobIntentServiceLauncher.enqueueWork 启动此服务,则 OnAppRemovedFromRecentListener 几乎立即被销毁,并且在从最近删除应用程序时也不会调用 onTaskRemoved

有谁知道如何检测从 Android Oreo 上的最新应用中删除我的应用,这将始终有效?

【问题讨论】:

  • 嗨,您找到任何解决方案了吗
  • 很遗憾没有。关于您的答案的通知对我来说很容易 - 我认为有人找到了解决方案:P
  • 您最终找到解决方案了吗?
  • 任何解决方案??

标签: android android-8.0-oreo android-recents android-8.1-oreo


【解决方案1】:

如果您使用活动,我认为您可以使用 onDestroy() 或 onStop() 方法来正确检测应用程序的清理或关闭

【讨论】:

  • 我还想在活动之外处理它 - 例如,当通过后退按钮从应用程序退出时,所有活动都被破坏但进程仍然有效并且在“最近”可用。因此,仅在 onDestrop 和 onStop 上进行活动是不够的 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 2015-08-11
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多