繁体   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