Android 剖面开关的应用要求

Android 剖面开关的应用要求,android,android-activity,android-broadcast,android-multiple-users,Android,Android Activity,Android Broadcast,Android Multiple Users,我正在使用的android应用程序涉及两个活动(父(p)和子(C))。问题是,在配置文件切换(比如从正常模式切换到受限配置文件模式)上,父活动被一个我们依赖的包终止,也就是说,安卓不建议终止配置文件切换上的活动,我们有一个要求,所以我们必须这样做。因此,在这个场景中,我们希望在配置文件切换的情况下也完成子活动。我已经了解并看到,当我作为独立活动启动子活动时,这可以完美地检测配置文件切换。但实际的需求是当父活动通过意图启动子活动时。在这种情况下,它根本检测不到配置文件切换。 PS:我知道syste

我正在使用的android应用程序涉及两个活动(父(p)和子(C))。问题是,在配置文件切换(比如从正常模式切换到受限配置文件模式)上,父活动被一个我们依赖的包终止,也就是说,安卓不建议终止配置文件切换上的活动,我们有一个要求,所以我们必须这样做。因此,在这个场景中,我们希望在配置文件切换的情况下也完成子活动。我已经了解并看到,当我作为独立活动启动子活动时,这可以完美地检测配置文件切换。但实际的需求是当父活动通过意图启动子活动时。在这种情况下,它根本检测不到配置文件切换。 PS:我知道system.exit不应该在Android应用程序中使用,但这是一个要求,因为在配置文件切换的情况下,父活动会这样做。我这里还有另一个查询,因为system.exit(0)是为父活动完成的,它不应该终止整个过程吗?这不意味着它也会扼杀孩子们的活动吗?但事实并非如此!我能以某种方式做到这一点吗?如果可能的话,我根本不需要儿童活动的接收器。 守则:

public class ProfileSwitchApplicationKiller extends BroadcastReceiver {
private static final String TAG = "UserSwitchReceiver";

@Override
public void onReceive(Context context, Intent intent) {
    boolean userSentBackground = intent.getAction().equals(Intent.ACTION_USER_BACKGROUND);
    boolean userSentForeground = intent.getAction().equals(Intent.ACTION_USER_FOREGROUND);
    Log.d(TAG, "Switch received. User sent background = " + userSentBackground
            + "; User sent foreground = " + userSentForeground + ";");
    System.exit(0);
}
}

我已经在不同的地方注册了接收器,比如onResume/onCreate/onStart,但是控制从未到达概要文件切换接收器,即使它在从父活动启动子活动时到达onResume。 我注册接收人的方式是:

  ProfileSwitchApplicationKiller receiver = new ProfileSwitchApplicationKiller();
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_USER_BACKGROUND);
    filter.addAction(Intent.ACTION_USER_FOREGROUND);
    Log.e("Shyamam", "Registering Receiver");
    registerReceiver(receiver, filter);
我没有注销接收人的注册。这是必要的吗?我尝试在onStart中注册receiver并在onStop中注销,但在这种情况下,应用程序从未检测到配置文件切换