Activity的生命周期学习体验

来源:互联网 发布:淘宝优惠券手机连接 编辑:程序博客网 时间:2024/05/24 04:02

    今天学习了Activity的生命周期,首先我讲一下Log类,它主要是在程序中充当日志的输出,它几种日志输出,有用过DDMS控制台的人可能有留意到在LogCat输出窗口上可以看到有V(verbose)、D(debug)、I(info)、W(warn)、E(error),几种类型的日志,相对于有Log.v(String tag,String msg),Log.d(String tag,String msg),Log.i(String tag,String msg),Log.w(String tag,String msg),Log.e(String tag,String msg),5种日志输入,相对于的参数tag表示所在类的名字,msg表示输出的消息。使用Log可以给我们写程序提供错误的排查,也是一个非常便捷错误输出提示作用。这就是顺便的提一下Log的讲解,下面就讲解一下Activity的生命周期。

    讲到Activity的生命周期,就讲一下跟Activity生命周期有关的几个方法,其中有onCreate(BundlesavedInstanceState),OnStart(),OnRestart(),OnResume(),OnPause(),OnStop(),OnDestroy()如图:

也可以看一下文档中Activity的生命周期视图:


当我们看到这个图的时候,对android不是很熟悉的同学,可能就看的不太懂了,下面就用一个程序来简单介绍一下:


主要贴出三个Activity,其中MainActivity.java代码如下:

package com.cooguo.activity;


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 {

private static final  String TAG = "MainActivity";
private Button secondBtn = null;
private Button thirdBtn = null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        secondBtn = (Button) findViewById(R.id.second);
        secondBtn.setOnClickListener(listener);
        
        thirdBtn = (Button)findViewById(R.id.third);
        thirdBtn.setOnClickListener(listener);
        Log.i(TAG, "MainActivity-->onCreate");
    }


    private OnClickListener listener = new OnClickListener(){


@Override
public void onClick(View view) {
            Button btn = (Button)view;
             Intent itent = new Intent();
            switch (btn.getId()) {
case R.id.second:
itent.setClass(MainActivity.this, SecondActivity.class);
break;
case R.id.third:
itent.setClass(MainActivity.this, ThirdActivity.class);
break;
}
            startActivity(itent);
}
   
    };
    
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i(TAG, "MainActivity-->onStart");
}


@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.i(TAG, "MainActivity-->OnRestart");
}


@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i(TAG, "MainActivity-->OnResume");
}


@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i(TAG, "MainActivity-->OnPause");

}


@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.i(TAG, "MainActivity-->OnStop");
}


@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "MainActivity-->OnDestroy");
}
    
    
}

而SecondActivity的代码:

package com.cooguo.activity;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;


public class SecondActivity extends Activity {


private static final  String TAG = "MainActivity";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        Log.i(TAG, "SecondActivity-->onCreate");
    }


@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i(TAG, "SecondActivity-->onStart");
}


@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.i(TAG, "SecondActivity-->OnRestart");
}


@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i(TAG, "SecondActivity-->OnResume");
}


@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i(TAG, "SecondActivity-->OnPause");

}


@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.i(TAG, "SecondActivity-->OnStop");
}


@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "SecondActivity-->OnDestroy");
}
}

最后ThirdActivity.java的代码是:

package com.cooguo.activity;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;


public class ThirdActivity extends Activity {


private static final  String TAG = "MainActivity";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.third);
        Log.i(TAG, "ThirdActivity-->onCreate");
    }


@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i(TAG, "ThirdActivity-->onStart");
}


@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.i(TAG, "ThirdActivity-->OnRestart");
}


@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i(TAG, "ThirdActivity-->OnResume");
}


@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i(TAG, "ThirdActivity-->OnPause");

}


@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.i(TAG, "ThirdActivity-->OnStop");
}


@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "ThirdActivity-->OnDestroy");
}

}

我用的日志输出是用Log.i类型的日志,tag我都是用MainActivity主要是因为在Logcat中比较容易看出Activity的生命周期变化,还有一下配置文件一看代码就可能懂了,还有一点就是你没添加一个Activity都要在AndroidManifest.xml文件中添加相应的Activity,还有就是ThirdActivity这个Activity为了更加的体现Activity的生命周期视图,它的配置如下:

<activity android:name=".ThirdActivity"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.Dialog">

下图截图是我运行后的效果:


原创粉丝点击