Разница между контекстом действия и контекстом приложения

Это будет работать, инициализируя спиннер и findviewbyid, и использовать это будет работать

    Spinner schemeStatusSpinner;

  schemeStatusSpinner = (Spinner) dialog.findViewById(R.id.spinner);

schemeStatusSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            // your code here
            if(schemeStatusSpinner.getSelectedItemId()==4){
                reasonll.setVisibility(View.VISIBLE);
            }
            else {
                reasonll.setVisibility(View.GONE);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }

    });
222
задан Brian Tompsett - 汤莱恩 8 June 2015 в 04:52
поделиться

1 ответ

Вы видите различие между двумя контекстами при запуске приложения непосредственно от главного экрана по сравнению с тем, когда приложение запускается из другого приложения через намерение доли.

Здесь практический пример какой "нестандартные задние поведения стопки", упомянутый @CommonSenseCode, средствами:

предположим, что у Вас есть два приложения, которые общаются друг с другом, App1 и App2.

Запуск App2:MainActivity от средства запуска. Затем от запуска MainActivity App2:SecondaryActivity. Там, или использование контекста действия или контекста приложения, обе операции, живые в той же задаче и это в порядке (учитывая, что Вы используете все стандартные режимы запуска и поглощенные флаги). Можно вернуться в MainActivity с задним нажатием, и в недавних приложениях у Вас есть только одна задача.

предположим теперь, когда Вы находитесь в [1 119] App1 и запуск App2:MainActivity с намерением доли (ACTION_SEND или ACTION_SEND_MULTIPLE). Затем оттуда попытайтесь запуститься App2:SecondaryActivity (всегда со всеми стандартными режимами запуска и поглощенными флагами). То, что происходит:

  • , если Вы запускаете App2:SecondaryActivity с контекстом приложения на Android < 10 Вы не можете запуститься все операции в та же задача . Я попробовал андроидом 7 и 8, и SecondaryActivity всегда запускается в новой задаче (я предполагаю, то, потому что App2:SecondaryActivity запускается с контекстом приложения App2, но Вы происходите из App1, и Вы не запускали приложение App2 непосредственно. Возможно, под андроидом капота распознают, что и используют FLAG_ACTIVITY_NEW_TASK). Это может быть хорошо или плохо в зависимости от Ваших потребностей, поскольку мое приложение было неработающим.
    На Android 10 эти сбои приложения с сообщением
    , "Звонящим startActivity () от за пределами контекста Действия, требует флага FLAG_ACTIVITY_NEW_TASK. Это действительно, что Вы хотите?" .
    Так, чтобы заставить его работать над Android 10 необходимо использовать FALG_ACTIVITY_NEW_TASK, и Вы не можете выполнить все операции в той же задаче.
    , Как Вы видите, поведение отличается между версиями андроида, является странным.

  • , если Вы запускаете App2:SecondaryActivity с контекстом действия, все подходит, и можно выполнить все операции в той же задаче, приводящей к линейной backstack навигации.

я надеюсь, что добавил немного полезной информации

1
ответ дан 23 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: