一、Activity的概念

  是一种可以包含用户界面的组件,主要用于和用户进行交互。

二、Activity的三种装态

 (处于返回栈的栈顶的活动,系统回收可能性最小。)

(不在栈顶但仍可见,就进入暂停状态。)

(不在栈顶且完全不可见时,就叫停止。)

(从栈中被移除就进入此状态,系统最倾向于回收它从而保证内存充足。)

三、Activity生命周期的七个方法

android activity 主动重建 activity重载7个方法_暂停状态

   创建时调用,初始化操作写在这里,如指定布局文件,成员变量绑定对应ID等。

活动由不可见变可见时调用,Activity中目前还不太确定重载该方法时放些什么,但对后台Service来说,它的onStartCommand()是用来告诉系统如何重启,如判断是否在异常终止后重启,在何种状态下异常终,同为四大组件之一,这里估计功能也差不多。
在活动准备好与用户交互时调用,此时活动一定处于栈顶,且在运行状态。onResume()和onPause()方法是调用比较频繁的,在这两个方法里面一般做很小耗时的操作,以增强用户体验。
准备去启动或恢复另一活动时调用,当系统遇到紧急情况需要恢复内存,那么onStop(),onDestory()可能不被执行,因此你应当在onPause里保存一些至关重要的状态属性,这些属性会被保存到物理内存中。但此方法执行速度一定要快,否则会影响新栈顶活动的使用。
活动完全不可见时调用,与onPause()区别主要看该活动是否会变得完全不可见。可以将稍耗时些的东西放在这,例如写数据库。
被销毁前用,之后该Activity进入销毁状态,一般在这里释放内存。
重启时调用,程序之前onStop的时候记录和保存了程序的状态,直接根据保存状态还原Activty的状态和效果,如果再之前程序onstop()的时候没有对程序进行一些操作,再次onRestart()的时候不会修改程序的状态
Active/Runing一个新Activity启动入栈后,它在屏幕的最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
Paused,当Activity被另一个透明或都dialog样式的Activity覆盖时的状态。可见,但失去焦点。
Stopd,当Activity被另一个Activity覆盖,失去焦点并不可见时处于停止状态。
Killed,Activity被系统杀死回收或者没有被启动时处于Killed状态。
onCreate()->onStart()->onResume()
onPause()->onStop()
onRestart()->onStart()->onResume()
onPause()
onResume()
onDestory()

四、Activity栈

五、Activity的操作

    android.app.Activity

    

android activity 主动重建 activity重载7个方法_bundle_02

@Override
			protected void onCreate(@Nullable Bundle savedInstanceState) {
			    super.onCreate(savedInstanceState);
			}

    

android activity 主动重建 activity重载7个方法_bundle_03

@Override
			protected void onCreate(@Nullable Bundle savedInstanceState) {
			    super.onCreate(savedInstanceState);
			    setContentView(R.layout.newlayout);
			}
<activity android:name=".MyActivity"/>
			<activity android:name=".NewActivity"></activity>
<Button
			        android:id="@+id/button1"
			        android:layout_width="wrap_content"
			        android:layout_height="wrap_content"
			        android:text="启动NewActivity"
			        tools:layout_editor_absoluteX="160dp"
			        tools:layout_editor_absoluteY="515dp" />
/* 获取按钮 */
		        Button btn = (Button) findViewById(R.id.button1);
			/* 设置监听点击事件*/
		        btn.setOnClickListener(new View.OnClickListener() {
		            @Override
		            public void onClick(View v) {
				/*使用Intent,当前Activity.this,新Activity.class*/
		               Intent i = new Intent(MainActivity.this,MyActivity.class);
		                startActivity(i);
		            }
		        });
<Button
			        android:id="@+id/button1"
			        android:layout_width="wrap_content"
			        android:layout_height="wrap_content"
			        android:text="退出Activity"
			        tools:layout_editor_absoluteX="160dp"
			        tools:layout_editor_absoluteY="515dp" />
/* 获取按钮 */
			Button btn = (Button) findViewById(R.id.button2);
			/* 设置监听点击事件*/
			btn.setOnClickListener(new View.OnClickListener() {
			     @Override
			    public void onClick(View v) {
				/*finsih()函数退出当前Activity*/
			         finish(); 
			    }
			});

六、Activity的启动模式

暂未学习

七、Intent

启动新Activity的实现步骤:
			a、创建Intent对象
				Intent intent = new Intent();
			b、关联新旧两个Activity
				1)同一package
					intent.setClass(Activity1.this,Activity2.class);
				2)不同package
					intent.ComponentName(Activity1.this,"PackagesName+ClassName");
			c、传入参数:
				intent.putExtra("Key","value");
			d、启动新Activity
				Activity1.this.startActivity(intent);
		接收Activity的实现步骤:
			a、获取Intent
				Intent intent = getIntent();
			b、获取参数
				String value = intent.getStringExtra("Key");
		使用Bandle()传输数据
			a、发送数据
				//创建Intent对象
				Intent intent = new Intent();
				//该类作用携带数据
				Bundle bundle = new Bundle();
				bundle.putString("name","336023");
				intent.putExtras(bundle);
			b、接收数据
				Bundle bundle = getIntent().getExtras();
				String data = bundle.getString("name");
通过action跳转
			1)匹配Intent Filter中的action
			2)自定义action值,Category为“android.intent.category.DEFAULT”
			3)Android对待所有传递给Context.startActivity()的隐式intent至少包含“android.intent.category.DEFAULT”(对应CATEGORY_DEFAULT常量)。因此,活动想要接收隐式intent必须要在intent filter中包含"android.intent.category.DEFAULT".
			4)用Uri来做为Data
			5)附加信息extras.
		隐式调用:
			Intent intent = new Intent();
			//隐式意图,要做manifest.xml文件中声明意图过滤器
			intent.setAction("com.intent.aa");
			startActivity(intent);
		AndroidManifest.xml文件声明
			<activity android:name=".OtherActivity">
				<intent-filter>
					<action android:name = "com.intent.aa"/>
					<category android:name="android.intent.category.DEFAULT"/>
				</intent-filter>
			</activity>