noo*_*oot -2 android android-studio
我知道有两种方法可以创建Intent,它们是:
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
和
Intent intent = new Intent();
intent.setClassName(com.example.android.somepackagename, com.example.android.somepackagename.Activity2);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我知道两者基本上都做同样的事情,想知道是否有任何幕后差异,如果有特殊情况我们只需要使用一种类型.
谢谢
我知道两者基本上都是一样的
不,他们完全一样......如果com.example.android.somepackagename是你自己的包裹.
双参数构造函数的实现是:
public Intent(Context packageContext, Class<?> cls) {
mComponent = new ComponentName(packageContext, cls);
}
Run Code Online (Sandbox Code Playgroud)
执行setClassName()是:
public Intent setClassName(String packageName, String className) {
mComponent = new ComponentName(packageName, className);
return this;
}
Run Code Online (Sandbox Code Playgroud)
他们都设定了ComponentName.如果你进入ComponentName源代码,那么Context只需要调用getPackageName()它Context并使用它String.
setClassName()可以用来创建一个Intent标识单独包中的组件,Intent构造函数不能.这是相对不常见的,因为我们通常使用隐式Intents(例如new Intent(Intent.ACTION_VIEW, uri))来查找和调用其他应用程序中的组件.
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |