Activity相关

什么是Activity

        An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface. The window typically fills the screen, but may be smaller than the screen and float on top of other windows.

        Activity是应用的组件之一,充满整个窗口或者悬浮在其他窗口之上,负责与用户交互的界面。

        每一个Activity都需要在AandroidManifest.xml文件中的<activity>标签注册。

Activity的生命周期


 

package com.k1.test;

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

public class ActivityLifeCycleA extends ParentActivity {

	public static final String TAG = "activity_life_cycle";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_life_cycle);

		Log.v(TAG, "ActivityA onCreate()......");
	}

	@Override
	protected void onRestart() {
		super.onRestart();

		Log.v(TAG, "ActivityA onRestart()......");
	}

	@Override
	protected void onStart() {
		super.onStart();

		Log.v(TAG, "ActivityA onStart()......");
	}

	@Override
	protected void onResume() {
		super.onResume();

		Log.v(TAG, "ActivityA onResume()......");
	}

	@Override
	protected void onPause() {
		super.onPause();

		Log.v(TAG, "ActivityA onPause()......");
	}

	@Override
	protected void onStop() {
		super.onStop();

		Log.v(TAG, "ActivityA onStop()......");
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();

		Log.v(TAG, "ActivityA onDestroy()......");
	}
}

package com.k1.test;

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

public class ActivityLifeCycleB extends ParentActivity {

	public static final String TAG = "activity_life_cycle";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_life_cycle);

		Log.v(TAG, "ActivityB onCreate()......");
	}

	@Override
	protected void onRestart() {
		super.onRestart();

		Log.v(TAG, "ActivityB onRestart()......");
	}

	@Override
	protected void onStart() {
		super.onStart();

		Log.v(TAG, "ActivityB onStart()......");
	}

	@Override
	protected void onResume() {
		super.onResume();

		Log.v(TAG, "ActivityB onResume()......");
	}

	@Override
	protected void onPause() {
		super.onPause();

		Log.v(TAG, "ActivityB onPause()......");
	}

	@Override
	protected void onStop() {
		super.onStop();

		Log.v(TAG, "ActivityB onStop()......");
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();

		Log.v(TAG, "ActivityB onDestroy()......");
	}
}
运行结果如下图所示:

       

Activity的状态保存

        状态保存跟上面所述Activity的生命周期函数类似,只需要重写onSaveInstanceState()和onRestoreInstanceState(),在onSaveInstanceState中将需要保存的参数写入到一个Bundle中,在onCreate或者onRestoreInstanceState()中取出,并赋值给相应的控件即可。

Activity在栈中的形式

        栈的特点,先进后出。应用启动,那么Activity1初始化完成并添加的栈的顶端;启动Activity2,将Activity1压入栈底,Activity2添加到栈的顶端;启动Activity3同Activity2.弹出的顺序依次将顶端的Activity弹出,直到清空栈,此应用结束。

 

Activity的两种启动方式

  • 直接跳转到下一个Activity。startActivity(Intent intent),这个很简单,不再累述。

  • 带返回结果。startActivityForResult(Intent intent),此方式在第二个Activity中处理相关内容并返回给当前的Activity。这里的关键就是requestCode跟resultCode。

        下面一个简单的例子,ActivityA跳转到ActivityC,然后在ActivityC中输入任意内容并返回给ActivityA:

startActivityForResult(new Intent(this, ActivityC.class), 0);

上面这段代码需要两个参数,一个是Intent,一个是requestCode,下面是返回结果的方法:

Intent intent = new Intent(ActivityC.this, ActivityLifeCycleA.class);
				intent.putExtra("test", "test startActivityForResult(Intent intent)");
				setResult(RESULT_OK, intent);
				finish();

这里有一点需要注意的在设置完结果之后必须调用finish(),否则Acitivty会停留在当前界面不会返回。下面是接收结果的方法:

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 0 && resultCode == RESULT_OK) {
			((TextView) findViewById(R.id.textView1)).setText(data
					.getStringExtra("test"));
		}
	}

只需要重写onActivityResult(int requestCode, int resultCode, Intent data)方法即可。


例子下载地址:http://download.youkuaiyun.com/detail/k1_king/5014361

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值