Activity基础全面详解

本文详细介绍了Android开发中Activity的创建、页面跳转、信息传递及生命周期等核心内容,并讲解了Activity的启动模式和现场保护机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 创建Activity
1 新建class类,继承Activity方法
2 重写onCreate方法
3 设置setContent(R.layout.xxx.xml);设置显示内容
4 layout文件夹下面创建对应的xml文件。
5 在Manifest中注册Activity
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
</activity>
若Activity就在Manifest所设置的唯一标识Package中,则只用 .类名就可以,否则要写完整包名.类名。且在.java文件中设置setContent时,要将R文件所在的包名导入。
注:也可直接创建Activity文件,比上述方便很多。

2 页面跳转
显示方式:
1 创建Intent对象:
Intent intent=new Intent(context,XXX.class);
2用context.startActivity( )开启intent意图
startActivity(intent);
隐式方式:并不指定跳转Activity,而是让系统根据action进行过滤而选择启动Activity
1 空参构造intent:
Intent intent=new Intent();
2 设置action作为过滤标志:
intent.setAction("清单文件中对应Aactivity的action name");
//intent.
3 开启意图
startActivity(intent);
注: 使用隐式跳转,一定要在清单文件中配置相应Activity的<action/>和<category/>标签,两个都要写。例:
<intent-filter>
<action android:name="activity_demo" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
3 信息传递
3.1没有返回值
创建intent对象之后
使用intent.putExtra("keyname","msgvalue");添加想要发送的信息,可以添加多个。

接收方使用getIntent( )方法获取开启此Activity的Intent:
Intent intent=getIntent();
使用 intent.getXXXExtra("keyname");获取所发送过来的值:
String str=intent.getStringExtra("keyname");
3.2有返回值
发送方:
Intent intent = new Intent(this, Activity_receiver.class);
intent.putExtra("msg", "aanbsbdbds");
开始方法变为: startActivityForResult(intent,request_code);
还要重写onActivityResult( )方法,用来接收返回值。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Intent intent=data;//返回的intent。
String msg=intent.getStringExtra("rep");//获取传回的数据。
Toast.makeText(
this,
"requestCode: " + requestCode + "resultCode: " + resultCode
+ "data: " + msg, 500).show();
}
接收方:
Intent reint=getIntent();
reint.putExtra("key","vaule");//设置想要返回的信息
setResult(reponse_code,reint);//设置返回码,并将带有返回信息I的ntent返回
finish( )

4 生命周期
create
(restart)
start
resume
pause
stop
destory
4.1 单个Activity

4.2 Activity之间跳转
4.1.1覆盖原页面(A跳转B,B覆盖A)
A pasue
B create
B start
B resume
A stop
B按返回键或跳转按钮(其实都是会finnis()B)
B pause
A restart
A start
A resume
B stop
B destory
4.1.2跳转窗口样式(A跳转B,B以窗口样式弹出,A不会从屏幕消失)
android:theme="@android:style/Theme.Dialog"; 对话框的样式设置
A pause
B create
B start
B resume
B按返回键
B pause
A resume
B stop
B destory
5 savedinstanceState 现场保护
Activity中有一个onSaveInstanceState(Bundle outState)方法,当发生:
1设置更改;
2异常停止
时会调用该方法,并产生一个Bundle对象,将Aactivity当前状态保存下来。我们可以利用
outState.putInt("key_name",vaule);将我们想要保存的信息保存到bundle对象中。
然后在onCreate(Bundle savedInstanceState)中,用getInt("key_name");方法取出来。
例 设置更改(看电影由竖屏改为横屏,则会触发该事件)
在Activity第一次被创建时,调用onCreate方法,savedInstanceState=null,因为没有条件触发onSaveInstanceState(Bundle outState)方法。而设置改变以后,Activity也会被重建,再次执行onCreate方法时,Bundle对象就不为null了,此时就可以将我们保存在Bundle对象中保存的数据取出来。

6 Activity启动方式
android:launchMode="model_name";设置Aactivity的启动方式
1 standard 标准的,默认的 方式
每次跳转Activity都会新建一个,并压到栈中,先入后出,返回时一层层返回,直到最先压入的Activity.
2 singleTask
当跳转到某一个Activity时,会先判断栈里面是否已存在,若存在则将其前面的Activity全部出栈,让其处于栈顶;若栈中没有,则新建一个。
3 singleTop
跳转一个Activity时会判断栈顶是否就是所要跳转的Activity,若是则不创建新的;若不是则创建新的Activity。
4 singleInstance
被设置该模式的Activity会单独占一个栈, 且仅有一个。
例如:A->B->C->D->B,(B为singleInstance模式)
从B开始返回时,B->D,D->C,C->A;
原因是B和A C D不在同一个栈中,B在一个单独的栈,A C D在一个另一个栈中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值