簡體   English   中英

同一應用的多個實例在堆棧中生成

[英]Multiple Instances of the same app are generated in stack

如果有一個應用程序具有登錄活動,則通過單擊圖標啟動它。 此登錄活動也可以由另一個意圖啟動。 問題是活動正在運行時(通過觸摸應用程序圖標啟動),並且當它接收到不同的意圖調用時,它將啟動另一個登錄活動。

當收到不同的意圖調用以啟動登錄活動時,如何在關閉當前正在運行的活動后再次啟動登錄活動。 上面提到的不同目的是,當用戶選擇具有特定擴展名的特定文件時,必須啟動我的應用程序。

<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;
            }
        }
    }

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

}

當用戶選擇指定文件時,該應用程序將啟動另一個活動。 那么堆棧中有兩個登錄活動。 幫我擺脫這個

嘗試了單實例,單任務解決方案。 但是,當launchingmode設置為singleinstance或singletask並且接收到第二個intent調用時,它不會調用

importData()

方法。 所以我要下載的文件沒有下載..

在這里,我使用“ singleTask”作為launchMode。 然后,當再次調用Activity時,我必須使用onNewIntent()。 下面的鏈接給出了更多的解釋。

不會從另一個意圖過濾器中調用“ onCreate()”方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM