Activity调用过程及生命周期及从当前程序中打开相同包内的程序的过程

以下是自己参考别人的讲解,和自己验证的过程:

一、Activity生命周期是指Activity从启动到销毁的过程

二、Activity表现为四种状态。

·活动状态:Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互

·暂停状态:Activity界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互

·停止状态:Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡

·非活动状态:不在这三种状态中的Activity则处于非活动状态。

三、回调函数:

下面代码是验证各种操作时,回调函数的处理过程,函数继承 Activity中方法,并对以上方法进行了重写,加入了打印语句;点击 BUTTON按钮可以打开另一个程序,在Logcat中显示回调函数的调用过程;点击退出按钮关闭另一个程序时的调用过程;

下面有2中点击Button的调用方法:

具体请看代码:

1是显示红色的代码 ,但是需要在 main.xml中Button 中加入下面的代码

android:onClick="myclick"

myclick 必须和JAVA代码中 处理方法名字一致;

2是设置监听。

public class ActivelifecycleActivity extends Activity {
	person person;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);//开始
        setContentView(R.layout.main);
        System.out.println("onCreate");
        Button button = (Button) this.findViewById(R.id.button1);
//        button.setOnClickListener(new myclick());
//        
    }

//    class myclick implements android.view.View.OnClickListener{
//
//		@Override
//		public void onClick(View v) {
//			// TODO Auto-generated method stub
//			person = new person();
//			person.setAge(20);
//			person.setName("你他吗的谁呀!");
//			Intent intent =new Intent(ActivelifecycleActivity.this, second.class);
//			intent.putExtra("username", "张三");//将用户名传给第二个应用布局
//			intent.putExtra("person", person);
//			startActivity(intent);
//		}
//		}
   public void myclick(View view){
	   
	   person = new person();
		person.setAge(20);
		person.setName("你他吗的谁呀!");
		Intent intent =new Intent(ActivelifecycleActivity.this, second.class);
		intent.putExtra("username", "张三");//将用户名传给第二个应用布局
		intent.putExtra("person", person);
		startActivity(intent);	
    }
    	
    
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		System.out.println("onDestory");
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		System.out.println("onPause");
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		System.out.println("onRestart");
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		System.out.println("onStart");
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		System.out.println("onStop");
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		System.out.println("onResume");
	}

	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
//		super.onBackPressed();
		int i = 0;
		if(i==0){
			i++;
			Toast.makeText(this, "请再按一次退出", Toast.LENGTH_LONG).show();
		}else{
			this.finish();
		}
	}
    
}

Activity有四种本质区别的状态:

在屏幕的前台(Activity栈顶),叫做活动状态或者运行状态(active or running)
如果一个Activity失去焦点,但是依然可见(一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶),叫做暂停状态(Paused)。一个暂停状态的Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被杀掉。
如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被杀掉。
如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接杀掉它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
下面的图显示了Activity的重要状态转换,矩形框表明Activity在状态转换之间的回调接口,开发人员可以重载实现以便执行相关代码,带有颜色的椭圆形表明Activity所处的状态。

--------------------------

activity 生命周期, lifecycle

在上图中,Activity有三个关键的循环:

整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。
可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。
前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。
Activity的整个生命周期都定义在下面的接口方法中,所有方法都可以被重载。所有的Activity都需要实现 onCreate(Bundle)去初始化设置,大部分Activity需要实现onPause()去提交。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值