Android_Studio_组件_Activity_活动

一、Activity的概念

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

二、Activity的三种装态

 1、运行状态

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

 2、暂停状态

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

 3、停止状态

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

 4、销毁状态

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

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

在这里插入图片描述

 1、回调函数作用

  1、onCreate()

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

  2、onStart()

		活动由不可见变可见时调用,Activity中目前还不太确定重载该方法时放些什么,但对后台Service来说,它的onStartCommand()是用来告诉系统如何重启,如判断是否在异常终止后重启,在何种状态下异常终,同为四大组件之一,这里估计功能也差不多。

  3、onResume()

		在活动准备好与用户交互时调用,此时活动一定处于栈顶,且在运行状态。onResume()和onPause()方法是调用比较频繁的,在这两个方法里面一般做很小耗时的操作,以增强用户体验。

  4、onPause()

		准备去启动或恢复另一活动时调用,当系统遇到紧急情况需要恢复内存,那么onStop(),onDestory()可能不被执行,因此你应当在onPause里保存一些至关重要的状态属性,这些属性会被保存到物理内存中。但此方法执行速度一定要快,否则会影响新栈顶活动的使用。

  5、onStop()

		活动完全不可见时调用,与onPause()区别主要看该活动是否会变得完全不可见。可以将稍耗时些的东西放在这,例如写数据库。

  6、onDestory()

		被销毁前用,之后该Activity进入销毁状态,一般在这里释放内存。

  7、onRestart()

		重启时调用,程序之前onStop的时候记录和保存了程序的状态,直接根据保存状态还原Activty的状态和效果,如果再之前程序onstop()的时候没有对程序进行一些操作,再次onRestart()的时候不会修改程序的状态

 2、四种状态:

  1、激活状态

		Active/Runing一个新Activity启动入栈后,它在屏幕的最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

  2、暂停状态

		Paused,当Activity被另一个透明或都dialog样式的Activity覆盖时的状态。可见,但失去焦点。

  3、停止状态

		Stopd,当Activity被另一个Activity覆盖,失去焦点并不可见时处于停止状态。

  4、销毁状态

		Killed,Activity被系统杀死回收或者没有被启动时处于Killed状态。

 3、生命周期触发的事件

  1、Activity从创建到进入运行态所触发的事件

		onCreate()->onStart()->onResume()

  2、从运行状态到停止状态所触发的事件

		onPause()->onStop()

  3、从停止状态到运行状态所触发的事件

		onRestart()->onStart()->onResume()

  4、从运行状态到暂停状态所触发事件

		onPause()

  5、从暂停状态到运行状态所触发的事件

		onResume()

  6、进入销毁状态前所触发的事件

		onDestory()

四、Activity栈

 1、Android是通过一种任务栈的方式来管理Activity的。

  2、当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中。

  3、一个Activity的实例的状态决定了它在栈中的位置。

 4、处于前台的Activity总是在栈的顶端,当前台的Activity因为异常或其它原因被销毁时,处于栈第二层的Activity将被激活,上浮到栈顶。

 5、当新的Activity启动入栈时,原Activity会被压入到栈的第二层。

五、Activity的操作

 1、创建Activity

  a、在APP->main->java->点击右键 ->new ->java calss

    android.app.Activity
    在这里插入图片描述

  b、在新类中复写onCreate()函数

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

  c、res->layout->右键->new->layout source File

    在这里插入图片描述

  d、Activity必须要有界面,将layout加进去,在新类onCreate()函数中添加代码:

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

  e、将新创建的Activity添加到AndroidMainifest.xml中

			<activity android:name=".MyActivity"/>
			<activity android:name=".NewActivity"></activity>

 2、启用Activity

  a、在layout上创建按钮

			    <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" />

  b、在onCreate()中添加以下代码

			/* 获取按钮 */
		        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);
		            }
		        });

 3、关闭Activity

  a、在layout上创建按钮

			    <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" />

  b、在onCreate()中添加以下代码

			/* 获取按钮 */
			Button btn = (Button) findViewById(R.id.button2);
			/* 设置监听点击事件*/
			btn.setOnClickListener(new View.OnClickListener() {
			     @Override
			    public void onClick(View v) {
				/*finsih()函数退出当前Activity*/
			         finish(); 
			    }
			});

六、Activity的启动模式

暂未学习

七、Intent

 1、显示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");

 2、隐式Intent

		通过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>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值