Android Intent那点事

464 阅读2分钟

Intent这个东西,说简单也简单,说难也难,一般的项目中Intent起到的作用无非就是页面之间的跳转,和页面间的数据传递。 深的东西咱不往里边说(因为我也是个菜鸟,怕说错了嘿嘿!),就说一点浅显易懂的,先会用,再研究源代码。

一.:啥叫Intent

 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动 作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的 交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。

其实这些东西有个大概了解就行,主要还是要从代码中获得真知( 阿门 )。 二.: 作用是什么

 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用 startActivity()来启动一个activity,或者由broadcaseIntent()来传递给所有感兴趣的 BroadcaseReceiver, 再或者由startService()/bindservice()来启动一个后台的service.所以可以看出来,intent主要是用来启动其他的 activity 或者service,所以可以将intent理解成activity之间的粘合剂。

总结来讲就是 启动,跳转,传递

三.: 启动方法

① Activity

startActvity( )

startActivity( )

② Service

startService( )

bindService( )

③ Broadcasts

sendBroadcasts( )

sendOrderedBroadcasts( )

sendStickyBroadcasts( )

由上边的可以看出来,Intent不仅可以启动一个Activity,还可以启动service,发起广播Broadcasts

四.:举几个例子

  /** 
* 打开指定网页 
* @param view 
*/  
public void invokeWebBrowser(View view) {  
Intent intent = new Intent(Intent.ACTION_VIEW);  
intent.setData(Uri.parse("http://www.google.com.hk"));  
startActivity(intent);  
}  
/** 
* 进行关键字搜索 
* @param view 
*/  
public void invokeWebSearch(View view) {  
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);  
intent.putExtra(SearchManager.QUERY, "android");    //关键字  
startActivity(intent);  
}
/** 
* 播放多媒体
* @param view 
*/ 
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/foo.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);

Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);


注意:当你用Intent启动一个界面,要返回另一个界面的时候,要直接将启动的页面finish掉,不能用Intent,要不然会造成页面叠加,影响用户体验,为啥用finish不用intent呢,这个你就需要去看一下Android 的启动栈和启动模式了(这方面我觉得不算太难);如果你想返回页面的时候需要传递数据的话呢,这就涉及到startActivityForResult()了,不想打字了,下一章再说吧(下一章我也不知道到啥时候了......),如果有着急用的小伙伴,可以去问度娘哦,如果有什么不对的地方,请指点,我会虚心接受,蟹蟹!!