Activity介绍
activity是一个与用户交互的控件,主要来显示界面以及处理界面上一些控件的事件。
Activity的生命周期
启动,运行,暂停,停止,销毁
生命周期方法
- oncreated:创建时调用
- onStart:即将可见时调用
- onResume:获取焦点时调用
- onPause:被其他activity覆盖或者屏幕锁屏时调用
- onStop:对用户不可见时调用
- onRestart:从停止到再启动时调用
- onDestroy:摧毁时调用
当切换横竖屏时,会首先销毁activity,然后再重新创建,但是如果设置configChanges
属性,就可以在横竖屏切换时不执行其他生命周期方法
Activity的创建 配置 启动和关闭
配置
如果要找到Activity类,首先必须在配置文件AndroidManifest.xml
中声明该activity。
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="cn.itcast.activitybasic.PeachActivity"/>
如果该activity与manifest
标签中的package
属性一致,则可以将值直接设置为 <activity android:name=".PeachActivity"/>
。
启动
通过startActivity()
启动创建的activity;
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
通过finish()
关闭当前的activity
Intent
intent是意图,如果需要从一个activity切换到另一个activity,那么就需要一个intent。它不仅可以指定当前组件要执行的动作,还可以在不同组件之间传递数据。有隐式和显式。
显式intent
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
//第一个参数式当前activity ,第二个参数是要跳转的activity
还可以使用intent.setClass(this,SecondActivity.class)
startActivity(intent);
隐式intent
IntentFilter
隐式intent需要intentFilter过滤器与之匹配才能生效,有action,data,category
属性匹配规则。
Activity之间的跳转
activity之间的跳转主要有三个方面
第一个是从一个activityA跳转到另一个activityB
第二个是从另外一个activityB再跳转回activityA
第三个是接受B跳转回A的数据回传
- 两个Activity之间的传递数据
putExtra()
Intent intent = new Intent();
intent.setClass(this,SecondActivity.class);
intent.putExtra("studentName","黄少天");
startActivity(intent);
通过putExtra()
方法将数据添加到intent中进行传递,此时,在另一个Activity中可以使用getxxxExtra()
方法来接受数据。
Intent intent = new Intent();
String name = intent.getStringExtra("studentName");
//getIntExtra,getBooleanExtra
Bundle
类
Bundle类和map类似,通过键值对的形式保存数据。
Intent intent = new Intent();
intent.setClass(this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("account","苏沐橙");
intent.setExtras(bundle);
startActivity(intent);
在使用Bundle类获取数据如下
Bundle bundle = getIntent.getExtras()
String account = bundle.getString("account");
- activity之间的数据回传
数据回传包括三个方法,分别是
startActivityForResult(Intent intent,int requestCode)
:开启一个Activity,当这个Activity被销毁时,会从销毁的Activity中返回数据,requestCode是请求码,用来表示activity跳转的来源。setResult(int resultCode,Intent intent)
:携带数据进行回传,就是说当一个Activity开启第二个activity后,第二个activity需要将数据传回第一个activity,就可以使用这个方法。resultCode是返回码,用于标识来自哪个activity。在使用完setResult
方法之后,需要调用finish()
方法关闭activityonActivityResult(int requestCode,int resultCode,Intent data)
:接受回传的数据,这个方法用在第一个activity,用于接受来自于跳转之后的activity传回来的数据。当第二个activity被销毁后,会自动调用第一个activity的这个方法接受回传的数据。
activity的任务栈
留 遇到写
标签:调用,activity,程序,intent,Activity,Intent,跳转,单元 From: https://www.cnblogs.com/Dumbo/p/17227292.html