一:显示意图
应用场景:在应用程序内部进行跳转。
缺点:耦合性较高
常规使用方式:
在AndroidManifest中加入一个新的activity标签
Intent intent = new Intent();
intent.setClass(getApplicationContent(),secondActivity.class);
startActivity(intent);
二:隐式意图
应用场景:在不知道某一应用程序的类名,包名,并且引用不到时。可以跳转到其他应用。带参数访问浏览器的实现。
优点:耦合性较低
注意:data与type不可以分开写,使用setDataAndType()方法
常规使用方式:
在AndroidManifest中加入一个新的activity标签
//默认格式//数据标识//数据类型
Intent intent = new Intent();
intent.setAction("动作");
intent.setDataAndType(Uri.parse("abc:123"),"list/person");//123为所携带的数据
startActivity(intent);
三:Intent传递数据
应用场景:传递数据,RP计算器。
Bundle:数据捆,打包传输
常规使用方式1:
第一个页面
Intent inent = new Intent();
intent.setClass(this,secondActivity.class);
Bundle bundle = new Bundle();//打包发送
bundle.putString("name",name);
intent.putExtra("maps",bundle);
startActivity(intent);
第二个页面
TextView tv = new TextView(this);
Intent intent = this.getIntent();
Bundle bundle = intent.getBundleExtra("maps");//获取打包数据bundle
String name = bundle.getString("name');//取出需要的数据
tv.setText(name);
setContentView(tv);
常规使用方式2:
创建对象类(javabean)Person
实现Serializable接口
private static final long serialVersionUID = 1L;
第一个页面
Intent intent = new Intent();
intent.setClass(this,secondActivity.class);
Person person = new Person(name);//序列化对象传递
intent.putExtra("person',person);
startActivity(intent);
第二个页面
TextView tv = new TextView(this);
Intent intent = this.getIntent();
Person p = (Person)intent.getSerializableExtra("person');
String name = p.getName();
四:Intent返回数据
常规使用方式
第一个页面
将startActivity(intent);改为startActivityForResult(intent,1000);//1000为请求码。理解为标识
实现onActivityResult方法
if(requestCode == 1000 && resultCode == Activity.RESULT_OK)
{
String rpText = data.getStringExtra("rpText");
Toast.makeText(this,rpText,1).show();
}
第二个页面
实现onBackPressed方法//返回键点击事件
去掉继承父类方法,因为继承后点击返回键将直接返回
Intent data = new Intent();
data.putExtra("rpText",text);
setResult(Activity.RESULT_OK,data);//将返回码改为0
this.finish();//即返回事件
五:Activity生命周期
onPause方法:暂停。在activity被另一个activity给盖住时(盖住一部分),调用onPause,跑到暂停状态。
onResume方法:焦点激活。在onPause状态时,把activity上的界面给关掉就返回到,焦点状态onResume。
onStop方法:停止。当activity在焦点时,有一个界面把activity完全盖住时,先调用onPause方法,再调用onStop方法 进入此状态。
onRestart方法:重启。当activity处于停止状态时,把上面的activity给关掉,这时候会调用 onRestart->onstart->onResume
常用使用方式
onCreate : 初始化界面参数时
onDestory ; 释放资源
onResume : 界面获取焦点时回调,让界面动起来
onPause : 来一个界面盖住了一部分activity,动作:停止动态刷新数据
六:横竖屏切换Activity的生命周期
默认情况下会重新加载activity,容易重新加载数据,造成数据丢失。如游戏。
具体流程:onPause -> onStop ->onDestory -> onCreate ->onStart ->onResume
避免横竖屏切换重新创建activity
在清单文件的activity节点中加入:android:configChanges="orientation|keyboardHidden "
七:任务栈
为了提高用户体验
一个应用程序包含多个activity
栈的顶部的activity会在界面中显示,获取焦点。
任务栈的特点:先进后出,后进先出。
八:杂七杂八
AndroidManifest文件中含有如下过滤器的activity组件为默认启动组件,应用程序启动时,系统自动调用它。