欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Android_Studio_组件_Activity_活动

程序员文章站 2022-03-05 15:17:24
一、Activity的概念  是一种可以包含用户界面的组件,主要用于和用户进行交互。二、Activity的三种装态 1、运行状态 (处于返回栈的栈顶的活动,系统回收可能性最小。) 2、暂停状态(不在栈顶但仍可见,就进入暂停状态。) 3、停止状态(不在栈顶且完全不可见时,就叫停止。) 4、销毁状态(从栈中被移除就进入此状态,系统最倾向于回收它从而保证内存充足。)三、Activity生命周期的七个方法 1、回调函数作用  1、onCreate()   创建时调用,初始化操作写在这里...

一、Activity的概念

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

二、Activity的三种装态

 1、运行状态

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

 2、暂停状态

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

 3、停止状态

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

 4、销毁状态

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

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

Android_Studio_组件_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
    Android_Studio_组件_Activity_活动

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

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

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

    Android_Studio_组件_Activity_活动

  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>

本文地址:https://blog.csdn.net/Black_Leopard/article/details/110287218

相关标签: Android