我对 Activity 的理解

我对 Activity 的理解

Table of Contents 我对 Activity 的理解一、活动的创建:声明到布局二、对多个活动的理解:一、怎么启动另一个活动二、怎么向另一个活动传递数据三、后一个活动向前一个活动返回数据。三、活动的生命周期:四、对于onCreate函数的savedInstanceState参数的理解:五、我对活动的启动模式的理解:怎么获得全局 Context ?

一、活动的创建:声明到布局

二、对多个活动的理解:

一、怎么启动另一个活动

使用Intent可以启动另一个活动。

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

二、怎么向另一个活动传递数据

传递数据只需要将数据放到Intent中就可以了。我们在上面的代码上加几行

Intent intent = new Intent(MainActivity.this, SecondAvtivity.class);
// 使用键值对在Intent中,放入你要传递的数据
String data = new String();
intent.putExtra(key, data);
...
startActivity(intent);

然后在SecondActivity中读出数据就可以使用了

String getData = getIntent().getStringExtra(key);

三、后一个活动向前一个活动返回数据。

需要使用回调函数才能向上一个活动返回数据。

首先,需要将MainActivity中的代码中的startActivity()函数改成startActivityForResult()函数。表示当前活动需要SecondActivity在销毁时返回数据。我们继续在上面的代码中进行修改。

Intent intent = new Intent(MainActivity.this, SecondAvtivity.class);
// 使用键值对在Intent中,放入你要传递的数据
String data = new String();
intent.putExtra(key, data);
...
startActivityForResult(intent, 1);

startActivity() 函数除了需要一个Intent,还需要一个参数,就是请求码,保证返回的数据是你需要的数据。

然后,我们需要重写活动中的 onActivityResult() 函数对返回的数据进行处理。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  switch(requestCode) {
    case 1:
        if(resultCode == RESULT_OK) {
            String returnedData = data.getStringExtra(key);
            ...
        }
        break;
    default:
  }
}

最后就是在SecondActivity中在适当的时候使用setResult()函数返回数据,退出活动。

Intent intent = new Intent();

String data = new String();
intent.putExtra(key, data);
...
setResult(RESULT_OK, intent);
finish();                       //退出活动    

在setResult()函数中第一个参数RESULT_OK是一个常量,表示返回的结果码。在MainActivity中有onActivityResult()函数中的第二个参数就是得到返回数据的结果码,表示返回数据是否成功。

三、活动的生命周期:

onCreate():活动从无到有创建时会调用这个函数

onStart():活动从不可见到可见时,调用。

onResume():活动位于活动栈的栈顶时调用。

onPause():当活动部分隐藏时,调用

onStop():当活动完全不可见时调用

onDestroy():当活动被销毁时调用

onRestart():当活动重新启动时

四、对于onCreate函数的savedInstanceState参数的理解:

主要用在当活动处于onStop状态时,系统可能会回收这个活动。如果回收的话,那这个活动中的数据就会消失。所以,为了解决这个问题,就要用到这个参数。

首先我们要重写活动中的onSaveInstanceState(Bundle outState)这个方法。这个方法的主要作用就是将你认为可能丢失的数据保存到outState这个Bundle中。因为它可以保证会在活动被销毁之前调用。

然后,就是在重新创建活动时,onCreate(Bundle savedInstanceState)中的savedInstanceState参数也是Bundle类型,对,它就上次活动销毁时存储的数据。使用相同方法取出即可。

五、我对活动的启动模式的理解:

有一个活动栈管理所有的活动,活动启动时,就会放入栈顶,

有四种启动模式:

  • Standard:启动一个新活动时,无论栈顶是哪一个活动,都重新创建活动,压入栈中。
  • SingleTop:如果启动的新活动是栈顶活动,就直接使用栈顶活动,否则,就重新创建活动,压入栈中。
  • SingleTask:如果启动的新活动是栈中的活动,就弹出栈中该活动上面的活动,直接该活动成为栈顶活动,否则,创建新活动压入栈中。
  • SingleInstance :当新活动以此模式启动时,重新创建一个活动栈,将新活动压入新活动栈中。

怎么获得全局 Context ?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值