2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Activity详解—— Activity基本用法

Activity详解—— Activity基本用法

时间:2020-07-13 07:24:06

相关推荐

Activity详解—— Activity基本用法

Activity的xml配置

Activity在使用时候必须在xml中设置,否则在启动Activity时候会找不到当前的类。下面配置是常用的作为程序入口的Activity配置。如下设置后,点击应用启动图标,第一个启动的就是当前Activity。

<activity android:name=".MainActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="portrait"android:theme="@style/horizontal_slide"><!--intent消息过滤用来,此处标记用来接收系统的启动请求--><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

启动一个Activity

一般情款下,Activity使用intent启动,启动方法如下:

Intent intent = new Intent(MyActivity.this, MyOtherActivity.class);startActivity(intent);

除此以外,Activity还有隐式启动的方式:

隐式Intent是一种让匿名应用程序组件服务动作请求的机制。创建一个新的隐式Intent时,你要指定要执行的动作,以及这个动作所需要的数据。然后手机上能够执行此动作的应用回来响应这个动作。

当你使用这个新的隐式Intent来启动Activity时,Android会在运行时解析它,找到最适合在指定的数据类型上执行动作的类。这意味着,你可以创建使用其它应用程序的工程,而不需要提前精确地知道你会借用哪个应用程序的功能。

//Activity会在运行时候解析,调用所有能够执行这个动作的程序。这里启动的是一个打电话程序Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(“tel:555-2368”));startActivity(intent);

Activity简单生命周期

Activity的常用生命周期包括以下几个:

onCreate():Activity创建时候调用。生命周期第一个方法,一般做一些初始化操作。onStart():表示Activity正在启动,当前Activity处于可见状态,但还不可交互(编辑)。onResume():表示Activity已经可以编辑,Activity处于可交互状态。onRestart():一个未被销毁的Activity重新显示出来时候回回调这个方法。一般是调用顺序会是:onRestart()->onStart()->onResume()onPause():当Activity市区焦点(不可编辑)时调用,一般情况下onStop方法会紧接着被回调。onStop():一般在onPause方法执行完成直接执行,表示Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行onDestory():Activity正在被销毁,也是生命周期的最后一个方法。onNewInstent():非默认模式时,启动一个已存在的Activity时候,会先调用这个方法。需要在此方法中更新intent,否则getIntent()会一直获取旧的intent。

Activity的启动方式

在一下基础的android岗位中,android中有哪些常见的启动方式,是面试的常见问题之一。现在我总结下:

android有如下四种启动方式,他们所对应的状态如下:

singleTop

如果一个Activity已经存在,并且处于任务栈的栈顶。那么再启动这个Activity时不会创建新的实例,而是直接调用当前Activity的onNewIntent()方法,启动。

具体的生命周期是onNewIntent()->onResume()

singleTask

栈内唯一的启动方式。如果任务栈中已经存在当前Activity,那么直接启动当前Activity,不创建新的实例。同事在当前Activity栈之上的Activity会被移除。可以用来设置主页面。每次返回首页时候,结束所有Activity。

具体生命周期调用是onNewIntent()->onRestart()->onStart()->onResume()

singleInstance

在一个新的栈中打开一个Activity。可以用来共享Activity。如在一个应用中创建了一个Activity,然后在另一个应用中页可以再以这个模式建立这个Activity时,不会重复创建。

具体生命周期调用是onNewIntent()->onRestart()->onStart()->onResume()

standard(默认)

默认的模式,每次新建Activity时候都会在栈中加入一个Activity。

具体生命周期调用是onCreate()->onStart()->onResume()

Activity之间值传递

启动Activity时通过intent传值。

启动Activity时候传值:

Intent intent = new Intent(context,OtherActivity.class);intent.putExtra("key","value");context.startActivity(intent);

在OtherActivity中获取所传值:

String value = getIntent().getStringExtra("key");

在Activity的onActivityResult()方法中获取回传的值。

通过startActivityForResult()方法启动Activity

//此处设置的请求码为111startActivityForResult(new Intent(context,OtherActivity.class),111);

在当前Activity重写onActivityResult()方法获取回传值:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);//如果请求码相符,且返回值为正确值,则取值if (requestCode == 111 && resultCode == Activity.RESULT_OK) {data.getStringExtra("key");}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。