Activity的生命周期

记录学习Android的第一周(Activity的生命周期是活的,只有自己摸索才能掌握)

Activity的生命周期_第1张图片

   每一个Activity都有生命周期,不同周期阶段运行不同函数,这些状态对于一个Android应用状态至关重要。

比如说:我们做了一个基于Android手机社交软件,在一个Activity发送消息界面中,我们准备给朋友发送消息,刚撰写完成,正欲发送消息的时候,突然来了一个电话呼入,系统界面完全跳到电话应用Activity界面,等通话结束返回到我们的Activity发送消息界面,我们希望我们原先写的消息还存在,我们可以继续编写或发送消息。这种情况下,我们必须要深入了解Activity的生命周期,在相应的函数中保存、恢复我们的数据。

Activity在生命周期不同阶段对应的部分运行函数的相应代码如下:

package com.example.jsjzx.myapplication;

import android.os.PersistableBundle;
import android.provider.Settings;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
    StringBuilder sb=new StringBuilder();//为什么不用StringBuffer?考虑到线程安全
    int i=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       // Toast.makeText(this,"hello world",Toast.LENGTH_LONG).show();
       // System.out.println("hello world");
        sb.append(i++);
        sb.append(".OnCreate-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        sb.append(i++);
        sb.append(".OnStop-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onStart() {
        super.onStart();
        sb.append(i++);
        sb.append(".OnStart-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
        sb.append(i++);
        sb.append(".onResume-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        sb.append(i++);
        sb.append(".onPause-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        sb.append(i++);
        sb.append(".onDestroy-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        sb.append(i++);
        sb.append(".onRestart-->");
        Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

Activity常见运行状态说明:

(1).   当打开一个Android应用程序的时候,会先后依次执行该程序主Activity的onCreate()->onStart()->onResume()三个方法。

(2).   当退出程序(或者点击BACK键),会先后依次执行该Activity的

onPause()->onStop()->onDestory()三个方法。

(3).   打开应用程序运行时,突然有电话呼入,Activity会先后依次执行了

onPause()->onStop()这两个方法,这时候应用程序并没有销毁。

(4).   而当再次启动该Android应用程序时,则会先后依次执行了

onRestart()->onStart()->onResume()三个方法。

(5).   当按HOME键,然后再次进入Activity应用时,该应用的状态应该是和按HOME键之前的状态是一样的。所以,大多数情况下可以在onPause()里面保存一些数据和状态。而在onResume()里面来恢复数据。



你可能感兴趣的:(android,方法,Activity,生命周期)