大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Android技巧 > Android开发:Activity生命周期

Android开发:Activity生命周期(1)

关键词:生命周期技术AndroidActivity  阅读(1136) 赞(17)

[摘要]本文是对Android系统Activity生命周期的讲解,对学习Android编程技术有所帮助,与大家分享。

“关于Android Activity的生命周期”这个是android中一个重要的知识点,也是Android面试中出现最多的面试题。下面将介绍android中Activity的生命周期。

1.Activity几种状态

1.1Active(活动):当Activity位于栈顶时,它是可见,有焦点的前台Activity,可以用来响应用户的输入。

1.2Paused(暂停):一般情况,你的Activity可见但不具有焦点,例如 当前面的Activity是全透明或非透明的Activity时,下面的Activity就位于Paused状态。

1.3Stopped(停止):当一个Activity彻底不可见时,就处于这个状态。此时Activity完全不可见,但在内存中仍旧保留该Activity的状态和成员信息。

1.4Inactive(销毁):当一个Activity被杀死时,就变成Inactive。Inactive Activity会从Activity栈中移除,如果重新显示需要重新启动。一般销毁由系统Dalvik控制。

2.Activity状态图

主要包含onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy()几个函数,所有状态的变化是由Android内存管理器决定。

3.Activity生命周期每个函数的解析

3.1void onCreate(Bundle saveInstanceState)

该函数是该Activity第一次启动时调用,且启动后就不在执行,除非由于系统内存紧张,把处于Paused和Stopped状态下的Activity回收,然后再重新启动。

它有个形式参数saveInstanceState,它主要保存Activity由于系统内存不足等原因,被系统隐式销毁Activity,在被销毁之前一般的会调用onSaveInstanceState(),保留该Activity此时的状态信息。该方法中传入Bundle参数,系统会保留,当再次启动时,通过onCreate()方法传入。

3.2onStart()

一般情况下,该方法是在onCreate()之后调用或者在Stopped状态返回时调用。用户重新查看窗体时会执行。

3.3onResume()

启动过程成执行onCreate()-->onStart()-->onResume()或者 当Activity处于Stopped状态onStopped()-->onResume()

当Activity处于Paused状态时onPause()-->onResume()

3.4onPause()

一般窗体被交换到后台时执行onPause(),一般在onPause()中保存永久性数据。

3.5onStop()

onPause()-->onStop()。 Activity页面切换,或者用户直接按Back键,将该窗体从当前任务重移除,也会执行onStop()

3.6onRestart()

onStop()执行之后,该窗体和进程没有被系统销毁,此时用户又重新查看该窗体,则会执行窗体的onRestart()--->onStart()

3.7onDestroy()

Activity被销毁时执行onDestroy()。

4.Activity几个场景

下面用例子分别演示几个情况。

代码如下

MainActivity.java

 package com.forsta.life;
 
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 
 public class MainActivity extends Activity implements OnClickListener{
     private Button bt1;
     private Button bt2;
     private Button bt3;
     private static final String TAG="MainActivity";
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         Log.i(TAG, "onCreate()");
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         bt1=(Button) findViewById(R.id.bt1);
         bt2=(Button) findViewById(R.id.bt2);
         bt3=(Button) findViewById(R.id.bt3);
         bt1.setOnClickListener(this);
         bt2.setOnClickListener(this);
         bt3.setOnClickListener(this);
     }
     
     @Override
     protected void onStart() {
         Log.i(TAG, "onStart()");
         super.onStart();
     }
     
     @Override
     protected void onRestart() {
         Log.i(TAG, "onRestart()");
         super.onRestart();
     }
     
     @Override
     protected void onResume() {
         Log.i(TAG, "onResume()");
         super.onResume();
     }
     @Override
     protected void onPause() {
         Log.i(TAG, "onPasue()");
         super.onPause();
     }
     @Override
     protected void onStop() {
         Log.i(TAG, "onStop()");
         super.onStop();
     }
     @Override
     protected void onDestroy() {
         Log.i(TAG, "onDestroy()");
         super.onDestroy();
     }
     @Override
     public void onClick(View v) {
         int id=v.getId();
         switch(id){
         case R.id.bt1:
             Intent intent=new Intent(getApplicationContext(), ActivityA.class);
             startActivity(intent);
             break;
         case R.id.bt2:
             Intent intent1=new Intent(getApplicationContext(), ActivityB.class);
             startActivity(intent1);
             break;
         case R.id.bt3:
             finish();
             break;
         default:break;
         }
         
     }
 
 
 }
«上一页123下一页»


相关评论