Android Activity的生命周期

转载地址:http://testerhome.com/topics/2475

今天 闲着没事,研究了下 Android 中 Activity 的生命周期,目前有所领悟,本次内容主要是以实践为主,图文结合哈~

一、android 中的 Activity的活动状态,主要分为 4中状态:
1、运行
2、暂停
3、停止
4、销毁

二、活动的声明周期
Android 中的Activity 类中共定义了 7个回调方法

1、onCreate()
2、onStart()
3、onResume()
4、onPause()
5、onStop()
6、onDestroy()
7、onRestart()

三、3中生存周期

以上的7个方法中,除了onRestart()方法,其他的都是两两相对应的;

1、完整生命周期
活动在onCreate() 和 onDestroy();

2、可见生存周期

活动在onStart() 和 onStop()

3、前台生存周期

活动在 onResume() 和 onPause()

四、活动周期示意图:

五:身临其境

接下来我么来实战一下,需求如下:

需求:

实现一个应用中的从主界面分别跳转到其他的2个界面

步骤:

1、新建一个项目,命名为ActivityLifeCyle 
2、分别创建2个 xml 文件;normal_activity.xml 、dialog_activity.xml
3、分别创建2个类,NormalActivity.java 、DialogActivity.java
4、在main_activity.xml 文件添加2个 button
5、在MainActivity 中写如界面跳转动作意图 --》 Intent
6、在AndroidManifest.xml 文件中 注册 NormalActivity.java 、DialogActivity.java

主要代码如下:

1、MainActivity.java

public class MainActivity extends Activity {

    public static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate");
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        Button startNormalActivity = (Button)findViewById(R.id.bt1);
        Button startDialogActivity = (Button)findViewById(R.id.bt2);
        startNormalActivity.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                Intent intent = new Intent(MainActivity.this,NormalActivity.class);
                startActivity(intent);

            }
        });

        startDialogActivity.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                Intent intent = new Intent(MainActivity.this,DialogActivity.class);
                startActivity(intent);

            }
        });






    }

    @Override
    protected void onStart() {
        // TODO 自动生成的方法存根
        super.onStart();
        Log.d(TAG, "onStart");
    }

    @Override
    protected void onRestart() {
        // TODO 自动生成的方法存根
        super.onRestart();
        Log.d(TAG, "onRestart");
    }

    @Override
    protected void onResume() {
        // TODO 自动生成的方法存根
        super.onResume();
        Log.d(TAG, "onResume");
    }

    @Override
    protected void onPause() {
        // TODO 自动生成的方法存根
        super.onPause();
        Log.d(TAG, "onPause");
    }

    @Override
    protected void onStop() {
        // TODO 自动生成的方法存根
        super.onStop();
        Log.d(TAG, "onStop");
    }

    @Override
    protected void onDestroy() {
        // TODO 自动生成的方法存根
        super.onDestroy();
        Log.d(TAG, "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;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

接下来,我们就开始把应用程序部署到我们真机或模拟器上,

我一开是 部署的时候,我们中Logcat 中可以看到如下信息:






汇总图:

六:总结

以上就是一个程序的运行周期,每一个动作需要用到的那些方法,当然具体的什么是 运行、停止、暂停啊,这些原理性的东东,度娘、Google 都可以搜索的到的,这里面就没有详细的说明,不懂的或者不理解的,自行查找哈,

本例中,还有个动作没有演示,就是在MainActivity 界面按Home键,此时MainActivity 处于什么状态呢?又会调用什么方法~~~~~哈哈,看懂上面的,我就不解释啦;

源代码地址:链接:http://pan.baidu.com/s/1mgqrMdU 密码:kljd

大家,可以自己写写,或者下载上面的代码玩一玩,印象很深刻的哈~~~~~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章