Android四大组件之Activity--Activity生命周期(一)

        大家都知道Activity是Android四大组件之一,并且作为Android应用界面实现不可或缺的一部分;但是它究竟是什么,有什么特性,接下来,我将就我所了解的Activity,阐述其内在的一面,如果在理解不当之处,还希望各位大神适时提出,不胜感激。

          【Activity定义 】

        Activity 呈现了用户可以操作的可视化界面,在Android应用中每一个Activity都是一个界面,用来和用户进行交互。

         【Activity 特性

          Activity 是用来和用户进行交互的,所以所有的界面组件和功能都需要在这一组件中实现,但是Activity 又是一个线程,在

        【创建Activity 】

          a.在项目中创建一个Activity ,需要继承Activity 或者FragmentActivity 并且父类的onCreate方法

          b.在Android_Manifest文件中,通过包名.类名的方式书写Activity标签以声明Activity组件;

          c.在Activity的,class类或配置文件中,可以设置Activity的属性

          <activity android:name="com.zhao.demo.类名"  android:screenOrientation="portrait" ></activity>

         【Activity 生命周期


            

由图可见,Activity生命周期依次为onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()、onDestroy();

                在Android中,Activity用友四种基本状态:

                a.活跃状态   当启动一个Activity后,这个Activity位于栈顶,此时拥有焦点,处于可见状态并且可以和用户进行交互;

                b. 暂停状态  当Activity被其他Activity覆盖(如来电,此时电话界面会覆盖在其他Activity上),此时Activity会调用onPause()方法,失去焦点可见,但是不可以与用户进行交互

                c 停止状态 当Activity被其他Activity覆盖,失去焦点并且不可见时;

                d.死亡状态  当调用kill.process()方法或者系统被杀死回收,也就是应用停止状态

          【Activity之间通信

              一个Activity相当于一个进程, 一个应用中包含多个进程,即不同的Activity,多个进程之间的通信,就像我们在使用应用的过程中会看到多个Activity,也就是看到不同的界面,而我们在不同的界面之间需要传递一些信息,这就是Activity之间的通信了

            既然是两者通信,中间肯定需要信使,而谷歌工程师就为我们提供了一个很好的信使--Intent

            使用Intent 可以跳转到指定的界面,在跳转的过程中,可以传值也可以不传值:

            一、不传值

           通过调用Intent的setClass方法,在其方法中分别传入本界面的上下文,指定界面的类名;然后调用startActivity()方法即可:

                                Intent intent1 = new Intent(MainActivity.this, WebLoadHtml.class);
startChildActivity(intent1);

           二、传值

            Intent不仅可以封装java八种基本数据,还可以封装对象实例;在Intent传值过程中主要分为两种情况:

            A. 不需要回传值

           A.clss 代码


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
         

                                 Intent intent1 = new Intent(A.this, B.class);

                                intent1.putExtra("data", "1");
startChildActivity(intent1);

}

B.class代码

       @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
         

                                 Intent intent = getIntent();

  String data =  intent .getExtra("data"); // data即为从A界面传过来的值

}

            B.需要回传值

           调用startActivityForResult(intent,code)方法,code传入int类型请求码,一般定义为final类型

         这里我先将code设为1

           

         A.clss 代码

public class A extends FramgentActivity{

        @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
         

                                 Intent intent1 = new Intent(A.this, B.class);

                                intent1.putExtra("data", "1");
startChildActivity(intent1);

}

    /**
     * 所有的Activity对象的返回值都是由这个方法来接收
     * requestCode:    表示的是启动一个Activity时传过去的requestCode值
     * resultCode:表示的是启动后的Activity回传值时的resultCode值
     * data:表示的是启动后的Activity回传过来的Intent对象
     */

     
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 1)
        {
            String data = data.getStringExtra("data");//data变量即为B界面传过来的值
        }
    }

}

B.class代码

            public class B extends FramgentActivity{

           @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
         

                                

                                 Intent intent = getIntent();

  String data =  intent .getExtra("data"); // data即为从A界面传过来的值

data = "B界面回传回去的值" ;

intent .putExtra("data",data);


setResult(1,intent);

                                finish();

}

}

         Note:如果传的值为实例对象,那么到指定界面后,接收值时需要做一下强制转换

        这样就可以实现两个进程之间相互通信了!

好了,现在先写到这里,Activity其他的特性,下篇在详细阐述!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值