关闭显示 FLAG_SHOW_WHEN_LOCKED 的 activity

Dismiss activity shown with FLAG_SHOW_WHEN_LOCKED

当用户在特定区域(获取 GPS)时设备处于锁定状态时,我在后台服务的锁屏界面中显示 activity。

activity有这个代码:

    protected void onCreate(Bundle savedInstanceState) {
        ...
        getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        ...
    }

它是从这样的服务调用的:

    if (inArea){
        PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
        if (pm.isScreenOn()==false){
            Intent wakeIntent = new Intent(mContext, mClass);
            wakeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mContext.startActivity(wakeIntent);
        }
    }

当用户退出该区域时,activity 不应再在锁屏中看到。但是我听不懂。

当用户的 GPS 不在该区域时,我尝试了这个:

    if (!inArea){
        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(1);
    }

但是 activity 仍然存在于锁屏中。

关于如何实现这一点有什么建议吗?

当用户退出时广播服务。让 activity 为该广播注册一个广播接收器。如果它收到该广播,让它自己完成()。

或者这方面的十几种变体 - 它们都归结为当应用程序不在该区域时通知应用程序并自行终止。