Android程序设计-Activity

目录

Activity介绍

Context

Intent

startActivityForResult()和onActivityResult()

Activity的生命周期


Activity介绍

        Activity是一种应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。本文主要介绍Activity的创建、跳转、数据交互及它的生命周期。

Context

        Context表示上下文,在 Android Context 分为Application Context Activity ContextService Context三种。

      Context描述的是一个应用程序环境的信息,通过它可以获取应用程序的资源和类,也包括一些应用级别操作,例如启动Activity、发送广播和接受Intent信息等。

Intent

        Intent中文翻译为“意图”,在Android Studio中,它可用于开启新的Activity,也可用于开启 Service服务和发送广播消息。另外Intent可以用于不同组件之间进行数据传递,是Android程序中各个组件进行交互的一种重要方式,其主要分为两种类型。

1)显式Intent:如果Intent中明确包含了要启动的组件的完整类名(包名及类名),那么这个Intent就是显式的,使用显式Intent最典型的情形是在自己的App中启动一个组件,如:

public void onClick(View view) {

        Intent subActivityIntent = new Intent(MainActivity.this, SubActivity.class);

        startActivity(subActivityIntent);

}

        通过启动按钮组件使活动由MainActivity跳转到SubActivity

       2)隐式Intent:如果Intent没有包含要启动的组件的完整类名,那么这个Intent就是隐式的。虽然隐式的Intent没有指定要启动的组件的类名,但是一般情况下,隐式的Intent都要指定需要执行的action,一般隐式Intent用在想通过自己的App启动另一个App的组件的时候,让另一个App的组件接收并处理该Intent,如:

        Intent intent = new Intent(Intent.ACTION_VIEW);

        intent.setData(Uri.parse("https://www.baidu.com"));

        startActivity(intent);

通过Intent启动本地的浏览器打开百度网页。

startActivityForResult()和onActivityResult()

        主界面(Activity)通过startActivityForResult()方法跳转至多个不同的子Activity,当子Activity的代码执行完毕后,再次返回主页面,将子activity中得到的数据显示在主界面或将完成的数据交给主Activity处理。而处理这种带数据的意图跳转需要使用到ActivityonActivityResult()方法

        在Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法,可以得到传回的数据,其中requestCode用于与startActivityForResult中的requestCode值进行比较判断,以便确认返回的数据是从哪个Activity返回的;resultCode是由子Activity通过其setResult()方法返回,适用于多个activity都返回数据时,来标识到底是哪一个activity返回的值。Intent对象带有返回的数据可以通过“data.getXxxExtra( );”方法来获取指定数据类型的数据。下面用一段简单的代码来说明Activity的跳转数据处理框架:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {   //根据请求码标识哪个Activity打开
    }
    switch(resultCode) {     //根据结果码标识哪个Activity返回
    }
}

Activity的生命周期

        Activity的生命周期即活动从开始到结束所经历的各个状态;换言之,从一个状态到另一个状态的转变,从无到有再到无,这样一个过程中所经历的状态就叫做生命周期。

Activity本质上有四种状态:

1)运行:一个活动被移到了活动栈顶部或前台。

2)暂停:如果一个活动被另一个非全屏的活动所覆盖(比如一个Dialog),那么该活动就失去了焦点,它将会暂停(但它仍然保留所有的状态和成员信息,并且仍然是依附在WindowsManager上),在系统内存极度缺乏时会将其杀死。

3)停止:如果一个活动被另一个全屏活动完全覆盖,那么该活动处于停止状态(状态和成员信息会保留,但是Activity已经不再依附于WindowsManager了),在系统缺乏资源的时候会将它杀死(它会比暂停状态的活动先杀死)。

4)重启:如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。在这种非正常情况下,系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息;与此同时,当Activity被移动到前台时,重新启动该Activity并调用onRestoreInstance()方法加载所保留的信息,以保持原有的状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android 程序设计中,Intent 和 Activity 是非常常见的两个概念,它们分别用于实现不同的功能。 1. Intent Intent 是用于在 Android 应用程序之间传递数据的一种机制。通过 Intent,我们可以实现 Activity 之间的数据传递、启动系统组件、启动服务等操作。Intent 由两部分组成:Action 和 Data。其中,Action 表示要执行的操作,如打开某个 Activity、发送邮件等;Data 则描述了要操作的数据,如要打开的文件、要发送的邮件地址等。 下面是一个简单的 Intent 示例代码: ```java Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("name", "Tom"); startActivity(intent); ``` 上述代码中,我们创建了一个 Intent 对象,并将要跳转的 Activity 指定为 SecondActivity。同时,我们还通过 putExtra() 方法向目标 Activity 传递了一个名为 "name" 的参数,值为 "Tom"。最后,我们调用 startActivity() 方法启动目标 Activity。 2. Activity Activity 是 Android 应用程序中的一个组件,用于展示用户界面。每个 Activity 都拥有自己的布局和生命周期,并且可以通过 Intent 启动其他 Activity。 下面是一个简单的 Activity 示例代码: ```java public class SecondActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); textView = findViewById(R.id.textView); Intent intent = getIntent(); String name = intent.getStringExtra("name"); textView.setText("Hello, " + name); } } ``` 上述代码中,我们创建了一个名为 SecondActivity 的 Activity,并在 onCreate() 方法中设置了其布局文件为 activity_second.xml。同时,我们还通过 getIntent() 方法获取了传递过来的 Intent 对象,并从中获取了名为 "name" 的参数值。最后,我们将参数值设置到了 TextView 控件中。 以上就是 Intent 和 Activity 的简单使用方法。在实际开发中,它们还有很多高级用法,如启动 Activity 后获取返回值、使用 Intent 进行隐式调用等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值