Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Activity 显示和隐式跳转对比

$
0
0

本文对比 Activity 的两种跳转方式的利弊。

显示跳转

实现

Intent intent = new Intent(mContext, AnotherActivity.class);  
startActivity(intent);  

优点

  • 性能高;
  • 可读性强;
  • 目标 Activity 唯一;

缺点

  • 产生强耦合
  • 目标 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);

优点

  • 避免了强耦合;
  • 可由后端以字符串形式吐出,灵活可配,比如目标 Activity 出现严重故障,通过后端吐空来规避故障;

缺点

同一个 scheme 对应多个 Activity 时,跳转时目标 Activity 不唯一,即使多个 Activity 分布于多个应用中。

举个例子。

情景一
手机上装了两个应用: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 打开。

作者:zhaizu 发表于2017/3/8 15:46:02 原文链接
阅读:45 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>