Android入门之Activity生命周期

纸上得来终觉浅,绝知此事要躬行  --陆游     问渠那得清如许,为有源头活水来  --朱熹

一、任务栈Task
        Android使用任务(Task)来管理Activity的,一个任务(Task)就是存放一组Activity的集合,通过栈的形式来管理Activity。
每当我们启动一个新的Activity时,就会将之前存在的Activity压入栈中;每当用户单击Back键或者finish()时会出栈,将之前的Activity呈现在用户面前。
Android入门之Activity生命周期_第1张图片

二、Activity的生命周期

(1)onCreate() 活动第一次创建时被调用
(2)onStart() 活动由不可见变为可见时调用
(3)onResume() 这个方法在活动准备好和用户进行交互时进行调用,此时Activity位于任务栈的栈顶,并且处于运行状态
(4)onRestart() 这个方法在Activity由停止状态变为运行状态前调用,也就是活动被重新启东了。
(5)onPause()这个方法在系统去启动或者恢复另外一个Activity的时候调用。这个方法会将CPU的一些资源释放掉,以及保存一些关键数据
(6)onStop()这个方法在Activity完全不可见的时候进行调用。
(7)onDestory()这个方法在Activity被销毁之前调用,将Activity由活动状态变为销毁状态。

Activity的活动周期图:



实例:
创建MainActivity.java和布局文件
public class MainActivity extends Activity {

    Button fristbutton;
    Button secondbutton;
    Button finishbutton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fristbutton=(Button)findViewById(R.id.fristbutton);
        secondbutton=(Button)findViewById(R.id.secondbutton);
        finishbutton=(Button)findViewById(R.id.finishbutton);
        fristbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,FristActivity.class);
                startActivity(intent);
            }
        });
        secondbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,SecondActivitty.class);
                startActivity(intent);
            }
        });
        finishbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        Log.i("info","onCreate");
    }
    @Override
    public  void onStart()
    {
        super.onStart();
        Log.i("info", "onStart");
    }
    @Override
    public  void  onResume()
    {
        super.onResume();
        Log.i("info","onResume");
    }
    @Override
    public void  onRestart()
    {
        super.onRestart();
        Log.i("info","onRestart");
    }
    @Override
    public  void  onPause()
    {
        super.onPause();
        Log.i("info","onPause");

    }
    @Override
    public  void onDestroy()
    {
        super.onDestroy();
        Log.i("info","onDestory");
    }
    @Override
    public  void  onStop()
    {
        super.onStop();
        Log.i("info","onStop");
    }
}
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
>
    <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fristbutton"
android:text="FristActivity"
/>
    <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/secondbutton"
android:text="SecondActivity"
/>
    <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/finishbutton"
android:text="Finish"
/>
</LinearLayout>
效果图:
Android入门之Activity生命周期_第2张图片
创建FristActivity.java以及布局文件
public class FristActivity extends Activity {
    @Override
    public  void  onCreate(Bundle savedinstacestate)
    {
        super.onCreate(savedinstacestate);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.frist_activity);
    }
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
<TextView
android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="this is frist_activity"
        />
</LinearLayout>

效果图:
 
   
 
创建SecondActivity.java以及布局文件

public class SecondActivitty extends Activity {
    @Override
    public  void  onCreate(Bundle savedinstacestate)
    {
        super.onCreate(savedinstacestate);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.second_activity);
    }
}

布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
<TextView
android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="this is the second_activity"
        />

</LinearLayout>

效果图同上
 程序启动MainActivity会执行如下几个过程: 
 

当单机按钮时跳转FristActivity页面时,MainActivity此时执行过程如下:

在FristActivity中按Back键返回时,此时MainActivity会执行如下过程:

在MainActivity中单击Finish按钮退出时,MainActivity此时执行如下过程:

你可能感兴趣的:(android,Activity)