Android开发——Intent

Intent基本含义

  Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

Intent 就是一个消息对象,用于向其他 应用程序组件(Activity,Service和Broadcast Receiver) 发送 Action 请求。 虽然用 Intent 实现组件间通讯的方式多种多样,但只有三种基本的使用场景:

第一、启动 Activity :

    在应用程序中,一个 Activity 代表着一个屏幕窗口。 通过向 startActivity() 传入一个 Intent,可以启动一个 Activity 实例。 这个 Intent 对需要启动的 Activity 进行了说明,并可附带任何必要的数据。

如果需要在 Activity 结束时从中接收结果,请调用startActivityForResult()来启动。 这样在 Activity 的回调方法 onActivityResult() 中就会接收到另一个作为结果返回的 Intent对象。

A、没有返回值的情况

在nowActivity中编写

<span style="white-space:pre">	</span>Intent intent = new Intent();
<span style="white-space:pre">	</span>intent.setClass(nowActivity.this, anotherActivity.class);
<span style="white-space:pre">	</span>intent.putExtra("Name", "hello world");		//传递参数
<span style="white-space:pre">	</span>Bundle bundle = new Bundle();
<span style="white-space:pre">	</span>User user =new User();//传递类
<span style="white-space:pre">	</span>bundle.putSerializable(SER_KEY, vUser);//SER_KEY String类型 唯一值
<span style="white-space:pre">	</span>intent.putExtras(bundle); 
<span style="white-space:pre">	</span>startActivity(intent );

在anotherActivity中编写

	Intent intent = getIntent();
	String name = intent.getStringExtra("name");//获取参数
	String name = intent.getStringExtra("name");//获取对象
	User user = (User) getIntent().getSerializableExtra(SER_KEY);

B、有返回值的情况

在nowActivity中编写

  <span style="white-space:pre">	</span>{
  <span style="white-space:pre">	</span>//调用是的方法
  <span style="white-space:pre">	</span>Intent intent = new Intent();
	intent.setClass(nowActivity.this, anotherActivity.class);
	 ....
	startActivityForResult(intent,iRESULT0);//iRESULT 返回值的标示
	}
 
	// 处理弹出子窗口的返回情况
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
	switch (requestCode) {
	case iRESULT0:
	....
	   break;
	  case iRESULT1:
	....
	   break;
	   end;
   }}

在anotherActivity中编写

 <span style="white-space:pre">	</span>Intent intent = getIntent();
 <span style="white-space:pre">	</span>setResult(nowActivity.iRESULT0, intent);
 <span style="white-space:pre">	</span>finish();


第二、启动服务:
    Service 是一种在后台执行操作的组件,它没有用户界面。 通过向 startService() 传入一个 Intent, 可以启动一个服务来完成一件一次性的操作(比如下载一个文件)。 在这个Intent 中对需要启动的服务进行了说明,并可附带任何必要的数据。
如果服务设计为 C/S 模式,你可以将其他组件与该服务绑定,这通过向 bindService() 传入一个 Intent 来实现。

通过 Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;

第三、发布广播:
     广播是一种可以被任何应用程序接收的消息。 系统为系统事件发布各种各样的广播消息,比如系统启动、设备开始充电等。 通过向 sendBroadcast()、 sendOrderedBroadcast()或 sendStickyBroadcast() 传入一个 Intent ,就可以向其他应用程序发送一条广播。

通过广播方法(比如 Context.sendBroadcast(),Context.sendOrderedBroadcast(),  Context.sendStickyBroadcast()) 发给broadcast receivers。

后续完善,HH


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值