一,Demo测试Activity的生命周期
写两个Activity:
package com.example.activity_04;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class FirstActivity extends Activity {
private Button myButton=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
System.out.println("firstActivity-->onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
myButton=(Button)findViewById(R.id.myButton);
myButton.setOnClickListener(new BtnClick());
}
class BtnClick implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
Intent intent=new Intent();
intent.setClass(FirstActivity.this,SecondActivity.class );
FirstActivity.this.startActivity(intent);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.first, menu);
return true;
}
@Override
protected void onRestart() {
// TODO 自动生成的方法存根
System.out.println("firstActivity-->onRestart");
super.onRestart();
}
@Override
protected void onDestroy() {
// TODO 自动生成的方法存根
System.out.println("firstActivity-->onDestroy");
super.onDestroy();
}
@Override
protected void onPause() {
// TODO 自动生成的方法存根
System.out.println("firstActivity-->onPause");
super.onPause();
}
@Override
protected void onResume() {
// TODO 自动生成的方法存根
System.out.println("firstActivity-->onResume");
super.onResume();
}
@Override
protected void onStart() {
// TODO 自动生成的方法存根
System.out.println("firstActivity-->onStart");
super.onStart();
}
@Override
protected void onStop() {
// TODO 自动生成的方法存根
System.out.println("firstActivity-->onStop");
super.onStop();
}
}
package com.example.activity_04;import android.app.Activity;import android.os.Bundle;public class SecondActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO 自动生成的方法存根System.out.println("SecondActivity--->onCreate");super.onCreate(savedInstanceState);}@Overrideprotected void onDestroy() {// TODO 自动生成的方法存根System.out.println("SecondActivity--->onDestroy");super.onDestroy();}@Overrideprotected void onPause() {// TODO 自动生成的方法存根System.out.println("SecondActivity--->onPause");super.onPause();}@Overrideprotected void onRestart() {// TODO 自动生成的方法存根System.out.println("SecondActivity--->onRestart");super.onRestart();}@Overrideprotected void onResume() {// TODO 自动生成的方法存根System.out.println("SecondActivity--->onResume");super.onResume();}@Overrideprotected void onStart() {// TODO 自动生成的方法存根System.out.println("SecondActivity--->onStart");super.onStart();}@Overrideprotected void onStop() {// TODO 自动生成的方法存根System.out.println("SecondActivity--->onStop");super.onStop();}}
然后启动程序,如图:
可以看到第一个Activity以此被调用的方法。
onCreate |
OnStart |
OnResume |
第一次创建时调用,可以配置使用的layout文件 |
当Activity能被我们看到的时候 |
当Activity可以获得用户焦点的时候被调用 |
之后点击第一个Activiyt上的按钮,跳转到第二个Activity:
发现第一个Activity的OnPause方法被调用,接着是初始化一个新的Activity被调用的方法,当第二个Activity出现之后,第一个Activity的OnStop方法被调用。
OnPause |
OnStop |
应用程序启动另外一个activity的时候,会调用第一个activity的OnPause方法 :通常保存当前Activity的数据
|
当Activity处于不可见的时候会调用第一个activity的Onstop方法,如果新出来的activity不完全遮挡住第一个activity,则不会调用 |
接着点击back按钮,
注意这里第一个Activity起来之后先调用的是OnRestart方法。
OnDestory |
OnRestart |
销毁Activity
一般两种情况会调用这个方法: 1,调用activity的finish方法 2,当系统资源不够用的时候
|
重新调用paused activity |
小结:
Activity调用的生命周期感觉类似.NET里面页面生命周期,感觉比那个简单点儿。