我有一个活动-> 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;
}
}
......
......
}
答案 0 :(得分:1)
您可能要使用launchMode的SingleTop模式。通过使用此方法,您将在android Activity Lifecycle方法的onNewIntent(Intent intent)中收到新的Intent。
换句话说,如果活动已经在顶部,并且新的Intent正在启动该活动,那么新的Intent将通过Activity
方法传递到相同的onNewIntent()
实例。 / p>