Несколько экземпляров одного приложения генерируются в стеке - PullRequest
0 голосов
/ 30 ноября 2018

Если есть приложение, у которого есть вход в систему, и оно запускается по щелчку значка.это действие входа в систему может быть запущено другим намерением тоже.проблема в том, что когда действие выполняется (запускается при прикосновении к значку приложения) и когда оно получает вызов другого намерения, оно запускает другое действие входа в систему.

как я могу снова запустить действие входа в систему после закрытия текущего рабочего действия, когда получен другой намеренный вызов для запуска действия входа в систему.другое намерение, упомянутое выше, заключается в том, что когда пользователь выбирает определенный файл с определенным расширением, мое приложение должно быть запущено.

<activity
        android:name=".login.Login"
        android:configChanges="orientation|keyboardHidden"
        android:windowSoftInputMode="adjustResize">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:scheme="content"
                android:mimeType="application/octet-stream"
                android:pathPattern=".*\\.chat"
                tools:ignore="AppLinkUrlError" />
        </intent-filter>

    </activity>

Второе намерение называется, мое приложение загружает выбранный файл и сохраняет его во внутреннем хранилище.это метод onCreate в действии входа в систему

 public void onCreate(Bundle savedInstanceState) {

    if (getResources().getBoolean(R.bool.portrait_only)) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
    super.onCreate(savedInstanceState);


    if (isTaskRoot()) {
        Uri data = getIntent().getData();
        if (data != null) {
            getIntent().setData(null);
            try {
                importData(data);
            } catch (Exception e) {
                // warn user about bad data here
                finish();
                return;
            }
        }
    }

 ...................................

}

, когда пользователь выбирает указанный файл, приложение запускает другое действие.тогда в стеке есть два входа в систему.помогите мне избавиться от этого

единственного экземпляра, были опробованы синглетские решения.но когда для режима запуска установлено значение singleinstance или singletask и получен второй вызов намерения, он не вызывает метод

importData ()

.поэтому файл, который я хочу скачать, не загружается ..

1 Ответ

0 голосов
/ 11 декабря 2018

Здесь я использовал "singleTask" в качестве режима запуска.Затем я должен использовать onNewIntent (), когда снова вызывается Activity.ссылка ниже дает еще несколько объяснений.

Метод «onCreate ()» не вызывается из другого фильтра намерений

...