`
在下个路口
  • 浏览: 111157 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Activity的生命周期你知几何?

阅读更多
      人从出生到离去,用文学的话来说是一个轮回,用生物学上的话来说是一个生命周期。什么是生命周期,生命周期是指一个事物从产生到消失的这一个过程,一棵树从种子到死亡,是一个周期;一个企业从创办到破产,是一个周期,同样的,一个程序也有生命周期。在Android开发中,Activity是用户与程序交互的界面,而用户使用手机用的最多的恐怕就是界面了。那么掌握Activity的生命周期,即界面的生命周期就尤为重要了。
      Android中控制生命周期是通过用一些方法在系统中运行的顺序来控制的,这些函数有
onCreate(),onStart()、onResume()、onPause()、onStop()、onDestroy()等。
顾名思义,我们应该能够猜到其执行顺序。那么我们可以来做一个简单的小测试,测试这些方法到底在什么时候执行,这些方法又是怎么来控制一个Activity的生命周期的。
      写一段代码,分别实现其以上函数:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
                  //创建按钮对象
Button jump=(Button)findViewById(R.id.jump);
jump.setOnClickListener(new LoginListener());

System.out.println("执行了onCreat方法");
       }
}

    public class LoginListener implements OnClickListener{
//实现接口抽象方法
       public void onClick(View v){
         Intent intent=new Intent();
intent.setClass(MainActivity.this,newActivity.class);
MainActivity.this.startActivity(intent);
finish();//销毁当前Activity
Toast.makeText(MainActivity.this, "成功跳转", 2).show();
   }
}
//执行生命周期各方法
    protected void onStart(){
    super.onStart();
    System.out.println("执行了onStart方法");
    }
    protected void onResume(){
    super.onResume();
    System.out.println("执行了onResume");
    }
    protected void onPause(){
    super.onPause();
    System.out.println("执行了onPause方法");
    }
    protected void onStop(){
    super.onStop();
    System.out.println("执行了onStop方法");
   }
    protected void onDestroy(){
    super.onDestroy();
    System.out.println("执行了onDestroy方法");
    }
   
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}
      执行这段代码,观察其输出结果,我们可以看到,
      在这个阶段我们看到执行了onCreat()和onStart()方法,而且先是执行了前者,onCreat()方法是在其创建Activity时执行的,这在创建一个Activity时,系统总是自动提供了onCreat()方法时,就可以猜想该方法是在创建时调用的,不然为什么你创建的时候为什么该方法总必须写呢!而事实也确实是在该阶段执行的。那么onStart()方法呢?该方法是Activity在屏幕对用户可见时调用的,也就是说,想让用户看见这个Activity就必须通过onStart()方法。先创建creat,再送到用户面前start。
     然后你可以在该Activity上执行某些操作,也就是用户与程序产生交互,是的,此时正是onResume()方法调用的时候 。当用户开始向此Activity  say hello时,那么这时就是onResume()出马的时候了。
      在MainActivity上创建一个Button,实行监听,当跳转的那一瞬间执行了onPause()方法,即是当此门面被暂停时,此时跳转到另一门面(Activity)时,原来的被暂停,此时调用的即为onPause()方法,而当newActivity完全显示在用户面前时,那么原来的MainActivity该执行生命周期里面的哪个函数呢,我们可以很清楚的想到,此时应该调用的就是onStop()方法。    
       我们分析完此上的几种函数后,只有onDestroy()了,而我们之前说过,一个完整的Activity生命周期必须包括从出现到消失的整个过程,那么onDestroy()就必须是在Activity消失的时候调用的。在这里我点击了返回,先后执行了onPause(),onStop()和onDestroy(),这是因为点击返回时,不能马上跳出该Activity,只能先暂停,之后停止,然后才是销毁,这是一个连续的过程。而且在第一个Activity跳转到第二个Activity时,用了finish方法,此时会调用onDestroy()销毁第一个Activity。
      

  
       综上,我们来做一个总结。
     onCreate():创建Activity调用,用于Activity的初始化,在Activity生命周期中      只执行一次,适用于实例化对象
     onStart():Activity:在屏幕上对用户可见时调用
     onResume():Activity开始和用户交互的时候调用,这时该Activity是在Activity栈的顶部
     onPause():Activity被暂停时调用,被其他的Activity挡在后面,这里可以做一些清理和保存工作
     onStop():Activity被停止或者Activity变成不可见时调用
     onDestroy():Activity被从内存中移除,一般发生在执行finish方法时或者Android回收内存的时候
      在一个生命周期里面,onCreat()和onDestroy()只能执行一次,这就像是人只能出生一次,也只有一次生命。而其它几种没有运行次数的限制,这要看具体的操作了。
  • 大小: 46.6 KB
  • 大小: 27.8 KB
  • 大小: 29.5 KB
  • 大小: 35.4 KB
分享到:
评论

相关推荐

    Android初体验

    理解Android应用的生命周期是至关重要的。`Activity`类有多个回调方法,如`onCreate`、`onStart`、`onResume`、`onPause`、`onStop`和`onDestroy`,每个对应着应用的不同状态。理解这些方法何时被调用,有助于编写更...

    从零开始Android游戏编程

    你将学习如何管理Activity的生命周期,以及如何自定义GameLoop来保持游戏的流畅运行。 5. **OpenGL ES**:对于2D和3D游戏,OpenGL ES是主要的图形库。你需要学习如何设置顶点、纹理坐标,绘制几何体,以及应用光照...

    Android开发之OpenGL ES教程

    2. **适配Activity生命周期**:当Activity的状态发生变化(如暂停、恢复)时,`GLSurfaceView`会自动处理OpenGL ES上下文的保存和恢复。 3. **选择合适的帧缓冲像素格式**:`GLSurfaceView`简化了选择适合设备的帧...

    简单手写板小程序

    9. **生命周期管理**:了解 Activity 的生命周期是安卓开发的基础,包括创建、启动、暂停、恢复和销毁等状态,以及如何在这些状态之间进行妥善的处理。 10. **版本兼容性**:安卓设备型号繁多,因此开发者需要考虑...

    Android开发应用实战详解源代码

    2.5 activity的生命周期 2.5.1 activity状态 2.5.2 剖析activity 2.6 android进程和线程 2.6.1 进程 2.6.2 线程 2.6.3 远程调用(remote procedure calls) 2.7 intent消息传递 2.8 intent广播事件 2.8.1 广播事件 ...

    Android应用源码之一个最最基础的图形程序,圆可以拖动,两点触控是删除圆,3点触控是添加一个圆-IT计算机-毕业设计.zip

    这个项目是一个很好的学习起点,涵盖了Android开发的基础知识,如图形绘制、事件处理、布局管理和Activity生命周期等。对于想要深入Android开发的学生来说,这是一个理想的实践项目。通过研究源码,不仅可以理解每个...

    贪吃蛇源代码

    9. **生命周期管理**: 作为Android应用的一部分,贪吃蛇游戏需要处理Activity的生命周期事件,如配置更改、后台切换等,以确保游戏状态的正确保存和恢复。 10. **异常处理**: 在源码中,应有适当的错误处理和异常...

    android 贪吃蛇游戏源代码+分析

    源代码讲解部分,可能涉及到如何处理碰撞检测、优化游戏性能,以及如何利用Android的生命周期管理来防止内存泄漏。碰撞检测通常使用简单的几何算法,检查蛇头是否与边界或自身身体相交。优化方面,可以考虑减少不必...

    Android 3D倒影效果源码.zip

    为了学习和理解这个项目,你需要具备一定的Android基础知识,包括Activity生命周期、布局管理、绘图原理以及Java编程基础。如果你对这些概念还不够熟悉,建议先从官方文档或相关教程开始学习。 总之,这份"Android ...

    安卓开发-MIUI指南针.zip.zip

    总的来说,开发一个MIUI指南针应用涵盖了安卓应用开发的多个方面,包括基本的组件和生命周期管理、传感器API的使用、几何和物理计算、UI设计与动画、数据滤波以及系统特性的适配。掌握这些知识点,开发者就能够构建...

    Android应用源码之PathEffectSample.zip

    7. **Activity与生命周期**:源码中可能包含一个或多个`Activity`,它们负责处理用户交互和控制视图的显示。`onCreate()`、`onStart()`、`onResume()`等生命周期方法可能会被重写以初始化和显示自定义的视图。 8. *...

    Android应用源码之纯java编写2d坦克小游戏.zip

    首先,源码会涵盖Android的Activity生命周期,这是每个Android应用的核心部分。Activity是用户与应用交互的窗口,负责处理用户界面和事件处理。在这个游戏中,Activity将作为游戏主界面,启动、暂停、恢复和结束游戏...

    Android应用源码之圆环菜单,只有你0想不到的,没有做不到的-IT计算机-毕业设计.zip

    6. 状态保存与恢复:考虑到Android应用的生命周期,开发者还需要处理Activity的状态保存与恢复,确保在配置改变(如屏幕旋转)时,菜单状态能正确恢复。 此外,作为毕业设计的一部分,这个项目还可能涉及到论文撰写...

    Android代码-安卓自定义view

    最后,后台Window是一个相对较复杂的话题,因为它涉及到服务和服务生命周期管理。在Android中,服务可以在后台运行,而Window则可以继续显示。开发者需要理解Service的基本用法,以及如何在服务中创建和显示自定义...

    Android应用源码之夏普名片扫描.rar

    - **Activity生命周期**:源码中必定包含了对Activity的管理和状态处理,例如onCreate(), onStart(), onResume(), onPause(), onStop()和onDestroy()等方法。 - **布局文件**(Layout XML):应用界面的设计通常会...

    long_java_meet21l_

    7. **生命周期管理**:在Android环境中,游戏需要适配Activity的生命周期,确保在暂停、恢复、销毁等情况下能正确处理。 8. **计分系统与生命值**:游戏中的计分系统需要记录和更新玩家得分,生命值则需要在泡泡...

    Android OpenGL ES 简明开发教程

    2. **适应Activity生命周期**:使得OpenGL ES库能够与Android Activity的生命周期协调一致。 3. **选择合适的Framebuffer像素格式**:简化选择合适的像素格式的过程。 4. **创建和管理绘图线程**:创建并管理单独的...

    android应用源码动画文字自由移动-IT计算机-毕业设计.zip

    7. **生命周期管理**:对于一个Android应用,理解Activity或Fragment的生命周期至关重要。开发者需要确保在适当的生命阶段启动和停止动画,以防止内存泄漏和性能问题。 8. **源码阅读与调试**:作为毕业设计,此...

    Android小球重力感应运动有碰撞声源码的冲突文件2017-08-0410-24-13-524.rar

    - 开发者需要确保在Activity的生命周期方法(如onCreate(), onResume(), onPause()等)中适当地启动和停止传感器监听,以节省资源并避免意外行为。 7. **用户输入处理**: - 重力感应事件的处理通常在...

    安卓Android源码——基于JBox2D的安卓Android游戏开发全源码.rar

    除了JBox2D,Android游戏开发还需要掌握Android SDK的基本知识,包括Activity生命周期、Intent、ViewGroup和View的使用,以及如何在AndroidManifest.xml中配置权限和启动图标等。此外,理解OpenGL ES或者使用Android...

Global site tag (gtag.js) - Google Analytics