Android_activity 生命周期

Android_activity 生命周期

  activity是Android四大组件之一,每一个activity都有自己的生命周期,就像每一个人一样会经历

出生-----学会行走,交流------健康------生病------痊愈------健康-------死亡

  对于activity的理解,Android官网提供了这样一张图:

  

  onCreate:activity第一次创建

  onStart:用户可以看见activity,但还不能点击操作

  onResume:获取焦点,可以进行点击操作

  Activity is Running:activity正常运行

  onPause:被暂停

  onStop:停止运行

  onDestroy:被销毁

  onRestart:重新运行

流程说明:onPause→onResume  activity没有完全被另一个activity覆盖,重新获取焦点,恢复可操作状态

    onStop→onRestart→onStar :第一个activity完全被第二个activity覆盖时,再次返回第一个activity,由不可见转为可见

    onStop→onCreate  进程被杀死时执行流程

activity生命周期:就像走楼梯一样是一阶一阶的

  

  

activity之间数据的传递:

  现在有activityA和activityB两个activity界面

  A为主界面,B界面需经过A界面跳转

  当由A界面跳转B界面时:A如何向B传递数据,以及B界面如何接受A界面传递过来的数据

  主要使用Intent类进行传递,如下代码,有详细注解

  A界面Java代码

public class MainActivity extends AppCompatActivity {
    private TextView textView,textView1;
    public static final String TEXTVIEW_2 = "textview2";
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate: ");
        final Book book = new Book("西游记","吴承恩");
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Second_activity.class);
                //1.直接使用intent传输数据
//                intent.putExtra(TEXTVIEW_2,"我是第二个activity");
                //2.使用bundle传输数据
                /*Bundle bundle = new Bundle();
                bundle.putString(TEXTVIEW_2,"我是使用bundle创建的第二个activity");
                intent.putExtra(BUNDLE,bundle);*/
                //3.传递Serializable对象
                intent.putExtra("name",book);
                //参数2:发送的请求 int 类型
                startActivityForResult(intent,999);

            }
        });
        findViewById(R.id.button6).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,Dialog.class);
                startActivityForResult(intent,0);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        textView = findViewById(R.id.textView2);
        super.onActivityResult(requestCode, resultCode, data);
        if((requestCode == 999) && (resultCode == 12)){
            if (data != null){
                textView.setText(data.getSerializableExtra("textView1").toString());
            }
    }
}

B界面Java代码:

public class Second_activity extends AppCompatActivity {
    public static final String TEXTVIEW_1 = "textview1";
    TextView textView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
        textView = findViewById(R.id.textView);
        //接收使用intent传递的数据
        if(getIntent() != null){//判断是否为空,容易出现空指针异常

            textView.setText(getIntent().getSerializableExtra("name").toString());
        }
        //接收使用bundle传递的数据
       /* if(getIntent() != null){
            Bundle bundle = getIntent().getBundleExtra(MainActivity.BUNDLE);
            if (bundle != null){
                textView.setText(bundle.getString(MainActivity.TEXTVIEW_2));
            }
        }*/
        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();
                intent.putExtra("textView1",new Book("水浒传","施耐庵"));
                //参数1:请求回应
                setResult(12,intent);
                finish();
            }
        });
    }
    //重写返回键
    @Override
    public void onBackPressed() {

//        super.onBackPressed();//会自动调用finish方法,需要注释掉
        Intent intent = new Intent();
        intent.putExtra("textView1",new Book("水浒传","施耐庵"));
        //参数1:请求回应 int 类型
        setResult(12,intent);
        finish();
    }
}

Dialogactivity:

1.创建Dialogactivity继承Activity类

2.在manifeste中修改DialogActivity的主题风格,标题

<activity
            android:name=".Dialog"
            android:label="请输入手机号码"
            android:theme="@style/Theme.AppCompat.Dialog"
            >

3.主activity启动DialogActiv,并发送数据传递请求

findViewById(R.id.button6).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,Dialog.class);
                startActivityForResult(intent,0);
            }
        });

4.DialogActivity传回数据

public class Dialog extends AppCompatActivity {
    private EditText editText;
    private static final String TAG = "Dialog";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog);
        editText = findViewById(R.id.editText);
        findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Dialog.this,MainActivity.class);
                intent.putExtra("name",editText.getText().toString());
                Dialog.this.setResult(RESULT_OK,intent);
                Dialog.this.finish();
            }
        });
    }
}

5.主activity接收数据onActivityResult方法中

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        textView1 = findViewById(R.id.textView3);
        if((requestCode == 0) && (resultCode == RESULT_OK)){
            if (data != null){
                textView1.setText(data.getStringExtra("name"));
            }

        }
    }

activity的每一个生命周期都有它存在的意义,在什么阶段要进行什么操作,只需在它对应的生命周期方法中执行相应的代码即可~

  

  

原文地址:https://www.cnblogs.com/conglingkaishi/p/9339684.html

时间: 2024-10-10 12:18:54

Android_activity 生命周期的相关文章

iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iOS启动原理图.png 具体执行流程 程序入口进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 程序被激活[

android Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化

生命周期Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情.例举了 7 个常用的钩子:protected void onCreate(Bundle savedInstanceState)protected void onStart()protected void onResume()protected void onPause()protected void onStop()protected void onRestart()protecte

连载《一个程序猿的生命周期》-《发展篇》- 12.向生活妥协的选择之路,你也面临吗?

本篇文章的主角是第二个加入我们团队的,暂且称他为G兄.是我第二家公司的同事,但是当时并没有交集,后来经过其他同事说起,被我招过来的.关于第二家公司的情况,请参见<而立之年,第一次跳槽,寻求转型> 在加入我们团队之前,G兄在一个不大不小的公司做内部OA系统,众所周知不会有什么太大发展,他当时也不太满意.在和他交流的过程中,我说的很直接:1.开发公司内部OA,并非公司实际产品,无法直接创造利润,就算是公司的产品,现在做OA的多了去了.2.OA开发完成后,只剩运维人员,假设裁掉一部分人员的话,你怎么

【Vue】详解Vue生命周期

Vue实例的生命周期全过程(图) (这里的红边圆角矩形内的都是对应的Vue实例的钩子函数) 在beforeCreate和created钩子函数间的生命周期 在beforeCreate和created之间,进行数据观测(data observer) ,也就是在这个时候开始监控data中的数据变化了,同时初始化事件 created钩子函数和beforeMount间的生命周期 对于created钩子函数和beforeMount间可能会让人感到有些迷惑,下面我就来解释一下: el选项的有无对生命周期过程

vue 生命周期初探

vue 以后发之势加上其独有的特性(压缩后很小),轻量级的MVVM框架,目前github star已有5.94万,而react 7万.由此可见是两个非常热门前端框架.这里就vue的生命周期做个初步体验. 发现看视频,动手之后,过段时间还是会忘,所以写一篇短文以备不时之需. 先附上官网的图片:vue生命周期 生命周期的钩子函数如果使用得当,会大大增加开发效率: 生命周期实践: 为了更好的查看beforeUpdate.updated,beforeDestroy,destroy钩子函数,使用v-on绑

1.2软件生命周期&amp;测试流程

软件的生命周期 可行性分析-需求分析-软件设计-软件编码-软件测试-软件维护 1.可行性分析 主要确定软件开发的目的和可行性(PM) 2.需求分析 对软件的功能进行详细的分析(PM),输出需求规格说明书(原型图) 3.软件设计(DEV) 把需求分析得到的结果转换为软件结构和数据结构,形成系统架构 概要设计:搭建架构.模块功能.接口连接和数据传输 详细设计:模块深入分析,对各模块组合进行分析,伪代码   包含数据库设计说明 4.软件编码(DEV) 可运行的程序代码 5.软件测试 5.1.单元测试(

ASP.NET页面生命周期与控件生命周期

ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete 加载完成(7)PreRender 预输出(8)PreRenderComplete 预输出完成(9)Unload 卸载 ASP.NET控件生命周期 -- 实例化(Instantiate) 控件被页面或另一个控件通过调用它的构造器所实例化.这个步骤之后所列出的阶段,仅当控件加入控件树中才会发生. --

Servlet简介与生命周期

转载请注明原文地址: 一:Servlet是什么 Servlet是运行在Web服务器上的Java程序,作为处理来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层.JSP在web服务器上要先转换成servlet,然后才能在JVM运行,并把结果拼接成浏览器可识别的文件(如html)传回浏览器显示. 二:Servlet的应用场景 单纯地对客户端的请求做处理时,如果我们用纯JSP文件(即:只有Java语句)来处理的话,还需要先转换为servlet才能运行

Servlet的生命周期

Servlet的生命周期是由Servlet的容器来控制的,它可以分为三个阶段:初始化.运行.销毁1.初始化阶段:(1)Servlet容器加载Servlet类,把Servlet类的.class文件中数据读到内存中:(2)然后Servlet容器创建一个ServletConfig对象.ServletConfig对象包含了Servlet的初始化配置信息:(3)Servlet容器创建一个Servlet对象:(4)Servlet容器调用Servlet对象的init方法进行初始化.2.运行阶段当Servlet