四大组件——Activity

生命周期

activity都是利用返回栈来进行管理的

活动状态

运行状态
暂停状态:活动不处于栈顶了,仍然可见,但是不可以操作
停止状态:当一个活动不再处于栈顶位置,并且完全不可见
销毁状态

生存期

onCreate():控件的初始化
onStart():由不可见变为可见
onResume():可交互 PS:onStart和onResume都表示Activity已经可见,但是onStart的时候Activity 还在后台, onResume 的时候Activity才显示到前台。
onPause():启动或者恢复另一个活动的时候调用、调用完毕之后活动还 可见
onStop():调用完毕之后活动完全不可见
onDestroy():activity被销毁之前调用
onRestart():停止状态变为运行状态之前调用
在这里插入图片描述
** 如果Activity被回收之前,需要保存重要数据的时候可以重写 onSaveInstanceState(Bundle outState),将数据保存在Bundle中,在Activity第二次被启动的时候会重新调用onCreate(Bundle savedInstanceState) 方法,其中参数就是之前方法保存的值。**

启动模式

standard :不管存不存在相同Activity实例,反正就一直创建

在这里插入图片描述

singleTop:检查栈顶是不是当前实例,是的话就不创建,如果不是,创建吧(不能检查栈中间的的实例)

在这里插入图片描述

singleTask 在整个栈中都要没有此实例才能创建,换句话说是整个过程中就只能拥有该一个该实例。检查到了的话,其余的activity全都出栈。

在这里插入图片描述

singleInstance 解决了共享活动实例,指定的活动会创建一个新的返回栈(异于前面三种模式的返回栈),当前某个栈的实例都出栈出完了的时候,接着另外一个栈进行出栈。

在这里插入图片描述

Activity传递数据

通过Intent进行传送

向下一个Activity传送数据

//FirstActivity中
String data = "Hello SecondActivity";
 Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
 intent.putExtra("extra_data", data);
 startActivity(intent);

// SecondActivity中
Intent intent = getIntent();
 String data = intent.getStringExtra("extra_data");
 
 //也可以将Bundle对象放入Intent中进行封装传送

向上一个活动返回数据

//FirstActivity中
.....
startActivityForResult(intent,1);//添加一个参数作为请求的单一性

// SecondActivity中
setResult(1,new Intent().putExtra("return_data","返回的数据"));
//这儿的RequestCode的意义就是启动SecondActivity可能是多个Activity启动的,根据不同的Code返回不同的结果 

//FirstActivity中
protected void onActivityResult(int requestCode,int resultCode,Intent data){//对返回的结果进行处理
        if (requestCode == 1){//根据不同的RequestCode处理不同的逻辑
         
        }
    }

启动活动的最佳写法

//在SecondActivity中提供静态方法actionStart(Context context, String data1, String data2),在FirstActivity中只需要调用即可,不需要在FirstActivity中指定“键”的信息,这些都在SecondActivity中进行了。

public static void actionStart(Context context, String data1, String data2) {
 Intent intent = new Intent(context, SecondActivity.class);
 intent.putExtra("param1", data1);
 intent.putExtra("param2", data2);
 context.startActivity(intent);
 } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值