Требование отмены приложения при переключении профиля

Приложение Android, над которым я работаю, включает в себя два действия (родительское (P) и дочернее (C)). Проблема заключается в том, что при переключении профиля (скажем, из обычного режима в режим ограниченного профиля) родительское действие уничтожается пакетом от которого у нас есть зависимость, то есть, хотя Android не рекомендует прекращать действие при переключении профиля, у нас есть требование, и поэтому мы должны это сделать. Таким образом, в этом сценарии мы хотели бы завершить дочернее действие также в случае переключения профиля. Я прошел через Как определить переключение между пользователями и увидел, что это отлично определяет переключение профилей, когда я запускаю дочернее действие как отдельное действие. Но фактическое требование - когда родительское действие запускает дочернее действие через намерение. В этом случае он вообще не обнаруживает смену профиля. 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 и отменить регистрацию в onStop, но в этом случае приложение никогда не обнаруживало переключение профилей.

0 ответов

Другие вопросы по тегам