Android的Activity生命周期

Android的Activity生命周期

       1、在android中,Activity主要有几个生命周期函数,分别为:onCreate(),onStart(),onResume(),onPause(),onStop(),onRestart(),onDestory(),这里只是介绍activity的整个过程。              

       2、现在有一个Activity,叫MainActivity,其中实现了以上所有的方法,而在每个方法中就只是用系统命令输出了所在的Activity类和方法名,代码如下:

        

package com.example.activitycycle;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Button bu = (Button)findViewById(R.id.nextActivity);
		
		bu.setOnClickListener(new OnClickListener(){
  
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent = new Intent();
				intent.setClass(MainActivity.this, LittleActivity.class);
				MainActivity.this.startActivity(intent);
			}
			
			   
		});
		System.out.println("MainActivity-onCreate");
	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		// TODO Auto-generated method stub
		super.onSaveInstanceState(outState);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		
		System.out.println("MainActivity-onDestoy");
	}

	@Override
	protected void onPause() {
		super.onPause();
		System.out.println("MainActivity-onPause");
	}

	@Override
	protected void onRestart() {
		super.onRestart();
		System.out.println("MainActivity-onRestart");
	}

	@Override
	protected void onResume() {
		super.onResume();
		System.out.println("MainActivity-onResume");
	}

	@Override
	protected void onStart() {
		super.onStart();
		System.out.println("MainActivity-onStart");
	}

	@Override
	protected void onStop() {
		super.onStop();
		System.out.println("MainActivity-onStop");
	}

}
          对应的xml布局文件叫activity_main.xml,只有一个文本域和两个按钮,代码如下:

           

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" 
    android:orientation="vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/mainActivity" />
    <Button 
        android:id="@+id/littleActivityBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/littleActivityText"/>
    <Button 
        android:id="@+id/FillActivityBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/fullActivityText"/>

</LinearLayout>

运行界面如图:

           


         3、有一个activity,叫LIttleActivity,这个Activity类似于一个dialog,这个是在AndroidManifest.xml文件中,给Activity添加:android:theme="@android:style/Theme.Dialog"属性实现的,代码如下:

          

package com.example.activitycycle;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class LittleActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.little_activity);
		System.out.println("LittleActivity-onCreate");
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		
		System.out.println("LittleActivity-onDestoy");
	}

	@Override
	protected void onPause() {
		super.onPause();
		System.out.println("LittleActivity-onPause");
	}

	@Override
	protected void onRestart() {
		super.onRestart();
		System.out.println("LittleActivity-onRestart");
	}

	@Override
	protected void onResume() {
		super.onResume();
		System.out.println("LittleActivity-onResume");
	}

	@Override
	protected void onStart() {
		super.onStart();
		System.out.println("LittleActivity-onStart");
	}  

	@Override  
	protected void onStop() {
		super.onStop();
		System.out.println("LittleActivity-onStop");
	}

	@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;
	}
	
	public void finishDialog(View v) {
        this.finish();
    }
}

          4、还有一个activity,叫做FillScreenActivity,这是一个普通的Activity,只有一个TextView,代码如下:

package com.example.activitycycle;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class FillScreenActivity extends Activity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fillscreen_activity);
		System.out.println("FillScreenActivity-onCreate");
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		
		System.out.println("FillScreenActivity-onDestoy");
	}

	@Override
	protected void onPause() {
		super.onPause();
		System.out.println("FillScreenActivity-onPause");
	}

	@Override
	protected void onRestart() {
		super.onRestart();
		System.out.println("FillScreenActivity-onRestart");
	}

	@Override
	protected void onResume() {
		super.onResume();
		System.out.println("FillScreenActivity-onResume");
	}

	@Override
	protected void onStart() {
		super.onStart();
		System.out.println("FillScreenActivity-onStart");
	}  

	@Override  
	protected void onStop() {
		super.onStop();
		System.out.println("FillScreenActivity-onStop");
	}

	@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;
	}
	
	public void finishDialog(View v) {
        this.finish();
    }
}

           5、当点击上图中的“全屏Activity”时,在logCat中添加一个Sysstem.out的过滤器,显示调用方法如图:



          这时,logCat中的过滤器的输出如图:



      这时再点击返回键时,返回初始的MainActivity的界面,过滤器的输出如图:


       6、当点击“小的Activity”时,界面如图:


     这个Activity类似一个Dialog,后面的MainActivity还可见,这时过滤器的输出如图:


      当点击返回键时,这时过滤器的输出如图:

 

      总结:

                1、当启动一个Activity时,调用的方法是onCreate()->onStart()->onResume(),我的理解分别为,创建、启动、可见

                2、根据上面的例子,有一个MainActivity,主要用于启动其他的两个Activity,这里简称M

                                                  有一个LittleActivlty,这个是一个Dialog形式的Activity,这里简称L

                                                  有一个FillScreenActivity,这个是一个普通的Activity,这里简称F

                 所以:

                       当启动MainActivity时,调用的方法是:onCreate(M)->onStart(M)->onResume(M);

                       当点击"全屏Activity"时,调用的方法是:onPause(M)->onCreate(F)->onStart(F)->onResume(F)->onStop(M);

                       这时点击返回键,调用的方法是:onPause(F)->onRestart(M)->onStart(M)->onResume(M)->onStop(F)->onDestory(F);

                       当点击“小的Activity”时,调用的方法是:onPause(M)->onCreate(L)->onStart(L)->onResume(L);

                      这时点击返回时,调用的方法是:onPause(L)->onResume(M)->onStop(L)->onDestory(L);


                这里点击“小的Activity”和点击“全屏Activity”的方法调用有区别,原因是:

                     点击小的Activity时,小的Activity只是部分遮挡住了MainActivity,也就是说MainActivity还可见,但只是不能获得焦点,所以这里没有调用onStop(M)方法;

                     当点击返回键时,onPause(L)--暂停L,onResume(M)--让M可见,由于之前没有调用onStop(M)方法,所以,这里就直接调用onResume(M)让其可见,接着的就是销毁L了;

                     点击全屏的Activity时,由于第二个Activity完全遮挡住了第一个activity,所以需要调用onStop(M),当按返回键时,由于已经被调用onStop(M)停止了,所以需要从新启动,

                     调用方法是:onPause(F)--暂停F,onRestart(M)--从新启动M,onStart(M)--启动M,onResume(M)--让M可见,onStop(F)--停止F,onDestory(F)--销毁F,回收内存;

                  

             源代码可以在我的github上下载:https://github.com/GreatmanBill/android.git

             转载请附上我的地址:http://blog.csdn.net/hello_ok_google/article/details/9075579

                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值