不会从另一个意图过滤器中调用“ onCreate()”方法

时间:2018-12-03 05:52:36

标签: android

我有一个活动-> A,它有两个意图过滤器。首次调用onCreate()方法时。没关系。但是,当一个意图过滤器已经调用它时,如果另一个意图过滤器调用了它,则不会调用onCreate()方法。

这是清单中的“活动”标记:

<activity
        android:name=".login.Login"
        android:configChanges="orientation|keyboardHidden"
        android:windowSoftInputMode="adjustResize"
        android:launchMode="singleTask"
        >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />


        <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=".*\\.octopus"
                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);

// this is true when the second intent filter is used

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


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

}

1 个答案:

答案 0 :(得分:1)

您可能要使用launchMode的SingleTop模式。通过使用此方法,您将在android Activity Lifecycle方法的onNewIntent(Intent intent)中收到新的Intent。

换句话说,如果活动已经在顶部,并且新的Intent正在启动该活动,那么新的Intent将通过Activity方法传递到相同的onNewIntent()实例。 / p>