Android创建活动笔记二

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dream_follower/article/details/82864993

1.使用Intent在不同的活动之间进行交互

Intent是Android程序中各组件进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据,Intent可以用于启动活动、服务和发送广播等场景,Intent有显式和隐式两种。

1.1使用显式的Intent

首先我们需要构造出来一个Intent,可以通过构造函数,进行构造,

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

第一个参数是context,第二个参数是我们想要启动的活动所对应的类,然后可以通过startActivity()方法来启动活动。

1.2使用隐式的Intent

隐式Intent是通过指定更加抽象的action和category等信息,来交给系统去分析,来找到合适的Intent去启动。可以通过在<activity>标签中配置<intent-filter>指定当前活动能够响应的aciton和category,如下:

<intent-filter>
                <action android:name="android.intent.action.CALL" />
               <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

这里就表示我们创建的活动可以响应android.intent.action.CALL这个action,而category标签指定当前活动能够响应的Intent中可能还带有的category。

1.3向下一个活动传递数据

Intent除了可以启动一个活动以外,还可以在启动活动的时候传递数据,思路是通过Intent中提供的一系列putExtra()方法的重载,把我们想要传递的数据存储在Intent中,然后在启动另外一个活动以后,将这些数据取出就行了。

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

被启动的活动里的代码:

Intent intent=getIntent();
        String data=intent.getStringExtra("extra_data");
        Log.d("SecondActivity",data);

1.4返回数据给上一个活动

Activity中有一个方法startActivityForResult()也可以启动活动,并且在活动销毁的时候能够返回结果给上一个活动,该方法有两个参数,第一个是Intent,第二个参数是请求码。当被调用的活动被销毁的时候在此之前我们需要通过setResult()方法返回数据,该方法有两个参数,第一个用于向上一个活动返回处理结果,第二个把带有数据的Intent传递回去,然后再调用finish()方法来销毁当前活动。当活动销毁时,会调用上一个活动的onActivityResult()方法。该方法有三个参数,第一个是requestCode,即我们在启动活动时传入的请求码,第二个是resultCode,即我们在返回数据时传入的处理结果,第三个是带有数据的Intent,
启动另外一个活动

  Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
                startActivityForResult(intent,1);

销毁被启动的活动并返回数据

 Intent intent=new Intent();
                intent.putExtra("data_return","HelloActivity");
                setResult(RESULT_OK,intent);
                finish();

获取返回的数据

  switch (requestCode){
            case 1:
                if (resultCode==RESULT_OK){
                    String returnedData=data.getStringExtra("data_return");
                    Log.d("FirstActivity",returnedData);
                }
                break;
            default:
        }

2.活动的生命周期

2.1返回栈

我们每启动一个活动,就会覆盖在原活动之上,然后点击Back键就会销毁最上面一个活动,下面的一个活动就会重新显示出来。Android使用任务来管理活动,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(具有先进后出的特性)。

2.2活动状态

每个活动在其声明周期中最多可能有4种状态。

2.2.1 运行状态

当一个活动位于返回栈的栈顶时,该活动就处于运行状态。系统不会回收处于运行状态的活动

2.2.2暂停状态

当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态,就是当处于运行状态的活动没有占满整个手机屏幕时,后面的活动依然可见,比如,一个对话框处于最前面,它后面的活动,依然可见。这种活动依旧是完全存活的,只有在内存极低的时候,系统才会去回收这种活动。

2.2.3停止状态

当一个活动不再处于栈顶位置,并且完全不可见时,就进入了停止状态。系统仍然会为这种活动保存相应的状态和成员变量。当其他地方需要内存时,该状态的活动有可能会被系统回收。

2.2.4销毁状态

当一个活动从返回栈中移除后就变成了销毁状态,系统最倾向于回收这种状态的活动,从而保证手机的内存充足。

2.3活动的生存期

Activity类定义了7个回调方法,覆盖了活动声明周期的每一个环节。

  • onCreate() :该方法会在活动第一次创建的时候调用。
  • onStart():该方法在活动由不可见变为可见的时候调用。
  • onResume() 该方法在活动那个准备好和用户进行交互的时候调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。
  • onPause() 该方法在系统准备去启动或恢复另外一个活动的时候调用。一般在这里将一些消耗CPU的资源给释放掉,以及保存一些关键数据。
  • onStop() 该方法在活动完全不可见的时候调用,它和onPause()的区别是,如果启动的新活动时一个对话框式的活动,那么onPause()就会得到执行,onStop()并不会得到执行。
  • onDestroy() 该方法在活动被销毁之前调用,之后活动的状态将会变为销毁状态。
  • onRestart() 这个方法在活动由停止状态转为运行状态之前调用。

猜你喜欢

转载自blog.csdn.net/dream_follower/article/details/82864993
今日推荐