如何在Android中关闭应用程序时收到通知

Sam*_*ada 11 android

我想显示Notification我的应用从最近的应用列表中删除的时间.

我已经尝试过将代码放入其中onStop(),onDestroy()但是都没有用.onStop()应用程序关闭后立即调用(尽管它仍在最近的应用程序列表中).

当应用程序从最近的应用程序列表中删除或以任何方式完成此需求时,是否可以告诉任何人调用哪种方法?

ear*_*jim 15

由于Oreo中引入了后台服务限制,这个答案已经过时,很可能无法在API级别为26+的设备上运行.

原始答案:

当您从Recents中刷出应用程序时,其任务会立即被杀死.不会调用生命周期方法.

要在发生这种情况时收到通知,您可以启动粘性Service并覆盖其onTaskRemoved()方法.

文件onTaskRemoved():

如果服务当前正在运行且用户已从服务的应用程序中删除了任务,则会调用此方法.

例如:

public class StickyService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        Log.d(getClass().getName(), "App just got removed from Recents!");
    }
}
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中注册它:

<service android:name=".StickyService" />
Run Code Online (Sandbox Code Playgroud)

并开始(例如onCreate()):

Intent stickyService = new Intent(this, StickyService.class);
startService(stickyService);
Run Code Online (Sandbox Code Playgroud)