Android开发四大组件之Activity-2020-12-01

Android开发四大组件之Activity

1、定义:activity是一种可以包含用户UI界面的组件,主要用于和用户交互。
2、activity的生命周期
onCreate() 在activity第一次被创建的时候调用。(一般用于初始化操作)
onStart() 在activity由不可见变为可见的时候调用
onResume() 在activity准备好和用户进行交互的时候调用,此时的activity一定位于返回栈的栈顶,并且处于运行状态。
onPause() 在系统准备去启动或者恢复另一个activity的时候调用,通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度要快,不然会影响到新的栈顶activity的使用。
onStop() 在activity完全不可见的时候调用,它和onPause()方法的主要区别在于,如果启动的新activity是一个对话框式的activity,那么onPause()方法会执行,该方法不会执行。
onDestroy() 在activity被销毁之前调用,之后activity的状态变为销毁状态。
onRestart() 在activity由停止状态变为运行状态之前调用,也就是activity被重新启动。
3、Activity生命周期体验
LifeCycleTest-Demo介绍:一共三个activity—MainActivity、SecondActivity、ThirdActivity、FourthActivity
MainActivity功能:跳转到SecondActivity、销毁本activity、隐式Intent跳转到FourthActivity
SecondActivity功能:返回MainActivity、跳转到ThirdActivity、销毁本activity
ThirdActivity功能:返回SecondActivity、销毁本activity
实验操作:(调用方法的顺序即写法先后顺序)

操作调用方法
启动apponCreate()-1 onStart()-1 onResume()-1
销毁MainActivityonPause()-1 onStop()-1 onDestroy()-1
跳转到SecondActivityonPause()-1 onCreate()-2 onStart()-2 onResume()-2 onStop()-1
销毁SecondActivityonPause()-2 onRestart()-1 onStart()-1 onResume()-1 onStop()-2 onDestroy()-2
返回MainActivityonPause()-2 onRestart()-1 onStart()-1 onResume()-1 onStop()-2 onDestroy()-2

后面的跳转activity和销毁activity和上内容类似。
4、显示和隐式使用Intent穿梭activity(Intent用于跳转activity和activity间的数据交互)
代码备注:主Activity的配置

<activity android:name=".MainActivity">
    <intent-filter>
	<!--以下两行配置表示该activity为app主activity-->	
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

显示

Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);

隐式:通过指定action和category来选择启动哪个activity
AndroidManifest.xml文件中配置FourthActivity的内容如下

<activity android:name=".FourthActivity">
    <intent-filter>
        <action android:name="jump_fourthActivity" />
	<!-- 下一行必须有,不管要不要自定义category,也可自定义category,一般不自定义,通过action来指定启动activity -->
        <category android:name="android.intent.category.DEFAULT" />                                                      	<category android:name="MyCategory" />
    </intent-filter>
</activity>

在MainActivity中添加如下内容 即可绑定按钮点击跳转FourthActivity

Intent intent1 = new Intent("jump_fourthActivity");
intent1.addCategory("MyCategory");
startActivityForResult(intent1,1);

注:紫色两行代码是对应的,当需要添加category来确认跳转到哪一个activity时这样写,一般不用。
5、activity间传递数据
向下一个activity传递数据
如需MainActivity传递数据到SecondActivity
MainActivity中代码
可以绑定在按钮点击事件中

String data = "我要传递数据给下一个activity";
	Intent intent = new Intent(MainActivity.this,SecondActivity.class);
	intent.putExtra("extra_data",data);
	startActivity(intent);

SecondActivity中代码
写在onCreate()方法中

	Intent intent = getIntent();
	String str = intent.getStringExtra("extra_data");

返回数据给上一个activity
如需SecondActivity返回数据给MainActivity(用到另一个启动activity的方法startActivityForResult())
MainActivity中代码
可以写在按钮点击事件中

	Intent intent = new Intent(MainActivity.this,SecondActivity.class);
	startActivityForResult(intent,1);
重写onActivityResult()方法
方法内的代码:
switch (requestCode){
    case 1:
       		if(resultCode == RESULT_OK){
           	String returnData = data.getStringExtra("return_data");
        }
}

SecondActivity中代码
可以写在onCreate()方法中的一个按钮点击事件中

	Intent intent = new Intent();
	intent.putExtra("return_data","我要将数据返回给MainActivity");
	setResult(RESULT_OK,intent);//该方法用于将数据返回给上一个activity
	finish();

6、Activit的四种启动模式
使用android:lunchMode属性设置activity的启动模式
standard
默认情况下,activity均是该模式,在该模式下,每当启动一个新的activity,它就会入栈并处于栈顶的位置。每次启动都会创建一个该activity的实例。
singleTop
在该模式下的activity,启动该activity时,如果该activity位于栈顶,则直接使用该activity,不会重新创建新的实例。
singleTask
在该模式下的activity,启动时系统首先会在返回栈中检查是否存在该activity的实例,如果有则直接使用,并把在这个activity之上的所有activity出栈,如果没有则创建一个实例。
singleInstance
指定为该模式的activity会启用一个新的返回栈来管理这个activity。该模式主要用于多个程序共享同一个activity实例。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值