本文对比 Activity 的两种跳转方式的利弊。
AndroidManifest.xml
<activity android:name=".AnotherActivity"; <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:host="another" android:scheme="loveya" /> </activity>Activity.java
Uri.Builder builder = Uri.parse("loveya://another").buildUpon(); builder.appendQueryParameter("strA", "a"); Intent i = new Intent(Intent.ACTION_VIEW, builder.build()); i.putExtra("intB", 1); startActivity(i);举个例子。
情景一 手机上装了两个应用:A 和 B; SecondActivity.java 位于应用 A 中,scheme 是 “love://ya”; ThirdActivity.java 位于应用 B 中,scheme 是 “love://ya”;
在 A 或 B 或 adb start 命令行使用隐式方式跳转,手机会弹出对话框让用户选择使用 A 还是 B 打开。
情景二 手机上装了两个应用:A 和 B; A 和 B 都引了一个 aar,该 aar 中有一个 AnotherActivity,在 A 或 B 中使用隐式方式跳转到 AnotherActivity,手机会弹出对话框让用户选择使用 A 还是 B 打开。