activity-程序活动单元

Activity介绍

activity是一个与用户交互的控件,主要来显示界面以及处理界面上一些控件的事件。

Activity的生命周期

启动,运行,暂停,停止,销毁

生命周期方法

  • oncreated:创建时调用
  • onStart:即将可见时调用
  • onResume:获取焦点时调用
  • onPause:被其他activity覆盖或者屏幕锁屏时调用
  • onStop:对用户不可见时调用
  • onRestart:从停止到再启动时调用
  • onDestroy:摧毁时调用

当切换横竖屏时,会首先销毁activity,然后再重新创建,但是如果设置configChanges属性,就可以在横竖屏切换时不执行其他生命周期方法

Activity的创建 配置 启动和关闭

配置

如果要找到Activity类,首先必须在配置文件AndroidManifest.xml中声明该activity。

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<activity android:name="cn.itcast.activitybasic.PeachActivity"/>

如果该activity与manifest标签中的package属性一致,则可以将值直接设置为 <activity android:name=".PeachActivity"/>

启动

通过startActivity()启动创建的activity;

Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);

通过finish()关闭当前的activity

Intent

intent是意图,如果需要从一个activity切换到另一个activity,那么就需要一个intent。它不仅可以指定当前组件要执行的动作,还可以在不同组件之间传递数据。有隐式和显式。

显式intent

Intent intent = new Intent(MainActivity.this,SecondActivity.class);
//第一个参数式当前activity ,第二个参数是要跳转的activity
还可以使用intent.setClass(this,SecondActivity.class)	
startActivity(intent);

隐式intent

隐式intent

IntentFilter

隐式intent需要intentFilter过滤器与之匹配才能生效,有action,data,category属性匹配规则。

Activity之间的跳转

activity之间的跳转主要有三个方面
第一个是从一个activityA跳转到另一个activityB
第二个是从另外一个activityB再跳转回activityA
第三个是接受B跳转回A的数据回传

  1. 两个Activity之间的传递数据
  • putExtra()
Intent intent = new Intent();
intent.setClass(this,SecondActivity.class);
intent.putExtra("studentName","黄少天");
startActivity(intent);

通过putExtra()方法将数据添加到intent中进行传递,此时,在另一个Activity中可以使用getxxxExtra()方法来接受数据。

Intent intent = new Intent();
String name = intent.getStringExtra("studentName");
//getIntExtra,getBooleanExtra
  • Bundle
    Bundle类和map类似,通过键值对的形式保存数据。
Intent intent = new Intent();
intent.setClass(this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("account","苏沐橙");
intent.setExtras(bundle);
startActivity(intent);

在使用Bundle类获取数据如下

Bundle bundle = getIntent.getExtras()
String account = bundle.getString("account");

  1. activity之间的数据回传
    数据回传包括三个方法,分别是
  • startActivityForResult(Intent intent,int requestCode):开启一个Activity,当这个Activity被销毁时,会从销毁的Activity中返回数据,requestCode是请求码,用来表示activity跳转的来源。
  • setResult(int resultCode,Intent intent):携带数据进行回传,就是说当一个Activity开启第二个activity后,第二个activity需要将数据传回第一个activity,就可以使用这个方法。resultCode是返回码,用于标识来自哪个activity。在使用完setResult方法之后,需要调用finish()方法关闭activity
  • onActivityResult(int requestCode,int resultCode,Intent data):接受回传的数据,这个方法用在第一个activity,用于接受来自于跳转之后的activity传回来的数据。当第二个activity被销毁后,会自动调用第一个activity的这个方法接受回传的数据。

activity的任务栈

留 遇到写

posted @   达杰瑞如归  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示