您的位置:首页 > 其它

intent 显式意图和隐式意图

2012-07-16 22:53 603 查看
Android中鼓励在程序的设计中尽量减少组件的耦合,因此Android中提供了一系列减少耦合的做法,表层我们熟悉的比如xml的布局文件和Activity分离,除此之外,还有一个重要的内容就是intent。它就好比是各个组件中互相通讯的纽带,在四大组件中除了内容提供之外,其他的三大组件都可以通过intent来通讯。除此之外,intent还有启动其他组件的作用。比如启动Activity,服务,绑定服务,通过intent还可以在广播之间传递数据。

对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。

一般:

显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。

隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

public class MainActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
intent.setAction("com.hoo.kay");
//设置数据URI与数据类型匹配
//intent.setData(data);
//intent.setType(type);注意这个方法会清除setData的内容,所以如果既要设置类型与数据,那么使用setDataAndType
intent.setDataAndType(Uri.parse("hoo://www.hoo.com/person"), "image/gif");
startActivity(intent);
}
});
}
}
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".OtherActivity"  android:label="@string/app_name">
<intent-filter>
<action android:name="com.hoo.kay" />
<action android:name="com.hoo.kesen" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.hoo.category.li" />
<data android:scheme="hoo" android:host="www.hoo.com" android:path="/person"/>
<data android:mimeType="image/gif"/>
</intent-filter>
</activity>
</application>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: