深入Activity生命周期(二)

简介: 下面以Demo来帮助理解Activity生命周期,   布局文件: 只显示一个TextView和一个EditView,Activity代码如下: import android.

  下面以Demo来帮助理解Activity生命周期,

  布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:id="@+id/tv"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="so many people."
    />
    <EditText 
    android:id="@+id/et"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:hint="hello,world"
    />
</LinearLayout>

只显示一个TextView和一个EditView,
Activity代码如下:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;

public class AndroidOrientationtestActivity extends Activity 
{
    EditText et;
    TextView tv;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initUI();
        Log.i("my", "onCreate---");
    }

    private void initUI()
    {
        et = (EditText)findViewById(R.id.et);
        //打印控件的地址,对比切屏前的地址是否为同一个
        Log.i("my", "et="+et.toString());
        tv = (TextView)findViewById(R.id.tv);
      //打印控件的地址,对比切屏前的地址是否为同一个
        Log.i("my", "tv="+tv.toString());
    }
    
    @Override
    protected void onRestart()
    {
        // TODO Auto-generated method stub
        super.onRestart();
        Log.i("my", "onRestart---");
    }


    @Override
    protected void onStart()
    {
        // TODO Auto-generated method stub
        super.onStart();
        Log.i("my", "onStart---");
    }


    @Override
    protected void onResume()
    {
        // TODO Auto-generated method stub
        super.onResume();
        Log.i("my", "onResume---");
    }


    @Override
    protected void onPause()
    {
        // TODO Auto-generated method stub
        super.onPause();
        Log.i("my", "onPause---");
    }

    @Override
    protected void onStop()
    {
        // TODO Auto-generated method stub
        super.onStop();
        Log.i("my", "onStop---");
    }

    @Override
    protected void onDestroy()
    {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.i("my", "onDestroy---");
    }
    
}

当启动Activity界面的时候,Log如下:

07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
07-30 09:54:26.813: INFO/my(833): onCreate---
07-30 09:54:26.813: INFO/my(833): onStart---
07-30 09:54:26.813: INFO/my(833): onResume---

 

 

 

 

可以看到首先启动的是onCreate(),然后是onStart(),然后是onResume(),看得到有了界面。
当按下home键的时候,log如下:

07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
07-30 09:54:26.813: INFO/my(833): onCreate---
07-30 09:54:26.813: INFO/my(833): onStart---
07-30 09:54:26.813: INFO/my(833): onResume---
07-30 09:56:31.183: INFO/my(833): onPause---
07-30 09:56:32.018: INFO/my(833): onStop---

可以看到多了onPause(),以及onStop(),

再次按下home键,切回去Activity,Log如下:

07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
07-30 09:54:26.813: INFO/my(833): onCreate---
07-30 09:54:26.813: INFO/my(833): onStart---
07-30 09:54:26.813: INFO/my(833): onResume---
07-30 09:56:31.183: INFO/my(833): onPause---
07-30 09:56:32.018: INFO/my(833): onStop---
07-30 09:57:49.303: INFO/my(833): onRestart---
07-30 09:57:49.303: INFO/my(833): onStart---
07-30 09:57:49.303: INFO/my(833): onResume---

在这里执行了onRestart(),onStart(),onResume()方法。
这里因为系统决定回收Activity,这里无法模拟当Activity被停止,然后被回收以后的状态,但是生命周期与新启动一个activity是一样的。

 

如果这时候按下call键,则会弹出对话框,这时候会局部挡住当前的Activity,然后再按返回键,log如下:

07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
07-30 09:54:26.813: INFO/my(833): onCreate---
07-30 09:54:26.813: INFO/my(833): onStart---
07-30 09:54:26.813: INFO/my(833): onResume---
07-30 09:56:31.183: INFO/my(833): onPause---
07-30 09:56:32.018: INFO/my(833): onStop---
07-30 09:57:49.303: INFO/my(833): onRestart---
07-30 09:57:49.303: INFO/my(833): onStart---
07-30 09:57:49.303: INFO/my(833): onResume---
07-30 10:01:20.093: INFO/my(833): onPause---
07-30 10:01:32.574: INFO/my(833): onResume---

当对话框挡住activity时,调用了onPause,按下返回键时,重新onResume().

 

 

 

 

 

 

 

 

 

目录
相关文章
|
弹性计算 大数据 测试技术
2024年3月阿里云服务器租用优惠价格表及明细报价:26元、61元、99元、199元、299元、531元
2024年3月阿里云服务器租用优惠价格表及明细报价:26元、61元、99元、199元、299元、531元的都有哦。阿里云新用户购买轻量应用服务器2核2G,50GB高效网盘(系统盘),带宽3M,优惠价61元一年;轻量应用服务器2核4G,60GB高效网盘(系统盘),带宽4M,优惠价165元一年;经济型e实例2核2G3M带宽40G Entry云盘优惠价99元一年(续费同价);经济型e实例2核4G3M带宽40G Entry云盘优惠价30.06元三个月;通用算力型u1实例2核4G1M带宽20G Entry云盘优惠价531.79元一年。
409 3
|
4天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1317 4
|
4天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
667 3
|
5天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
11天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
773 6