您的位置:首页 > 移动开发 > Android开发

【Android归纳】intent小结

2016-02-01 16:27 405 查看
前言
1显示启动传递数据

2隐式启动

3使用Bundle传递参数

4以singleTask模式启动Activityintent为空的问题

5其它相关

前言

intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据,一般被用户启动Activity,启动Service以及发送广播等场景

1、显示启动(传递数据)

使用intent从ActivityOne跳转到ActivityTwo

在ActivityOne中的代码如下:

Intent intent = new Intent();
intent.putExtra("param1", param1);
intent.putExtra("param2", param2);
intent.setClass(ActivityOne.this, ActivityTwo.class);
startActivity(intent);


在ActivityTwo中的代码如下:

//从ActivityOne中跳转到ActivityTwo中利用Intent传递数据。
//获取Intent
Intent intent = getIntent();
String param1 = intent.getStringExtra("param1");
String param2 = intent.getStringExtra("param2");


2、隐式启动

随便举一个例子,更多相关内容不再赘述

例如启动打开网页

//访问网页。
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);


3、使用Bundle传递参数

在ActivityOne中的代码如下:

//使用Bundle传递参数
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("param1",param1);
intent.putExtras(bundle);
intent.setClass(ActivityOne.this, ActivityTwo.class);
startActivity(intent);


在ActivityTwo中的代码如下:

Bundle bundle = this.getIntent().getExtras();
String param1  = myBundle.getString("param1");


4、以singleTask模式启动Activity,intent为空的问题

场景:Activity的启动模式设为:

android:launchMode="singleTask"


多次启动该Activity,又不想一直新建,调试发现intent为空。

原因:

activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.

如果要启动的activity是已经存在的,这时候通过getInten()方法获取到的intent是已启动的activity的原始intent.换句话说intent的数据没有更新.

解决方案:

如果要每次获取intent传来的新数据就需要在onNewIntent(Intent intent)方法里调用setIntent(intent)设置这个传来的最新的intent

代码示例:

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//关键代码
setIntent(intent);
//此时就可以接收最新的参数param1
String param1 = intent.getStringExtra("param1");
}


提示:

如果activity的启动模式是standard,那么每次都重新创建一个新的activity.这样intent也是最新的.就不用通过setIntent来更新这个intent

【Android归纳决】Activity启动模式

5、其它相关

更多隐式intent的用法

通过startActivityResult、onActivityResult、以及setResult实现数据的双向传递
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: