Android Activity基础

一、Activity是什么?

activity是一个应用组件,是Android程序里最基本的组件,它类似一个大容器,承载着其它应用组件。比如在它的上面添加一个按钮,一个或者多个选择框。一般会指定某个activity为主activity,首次启动的时候会展示给用户。然后每个activity可以跳转到另外一个activity,就是我们常见的跳转界面,这时候可能就是两个activity的跳转。
在这里插入图片描述在这里插入图片描述
上面就是图片说明,最外边的是activity,里面装着其它组件。一个activity可以跳转到其它的activity,其实它们就是程序界面。

二、创建Activity

创建一个最基本的activity需要四个步骤:

  1. 创建java类
  2. 创建布局文件
  3. 关联布局文件
  4. 在清单文件中注册activity

1.创建java类

在这里插入图片描述继承AppCompatActivity类,添加onCreate()方法,创建activity的方法。

2.创建布局文件

在这里插入图片描述这是布局文件,一个容器基本面容就是这里添加。就比如一个船,java类是船的龙骨。那布局文件就是船的整体样子,肉眼可见的船的样貌。

3.关联布局文件

在这里插入图片描述类中添加setContentView()方法关联布局文件,船的龙骨跟船体合体就完成了船的基本结构。

4.在清单文件中注册activity

在这里插入图片描述红色圈起来的就是注册代码,这样就完成了activity的注册,看到上面其它的activity也注册在这里,主activity也在这里,但是主activity添加了过滤器,用来标识程序启动的时候第一个启动的就是它。

		 <activity 
 			android:name=".MainActivity">
 			//过滤器
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

5.快捷创建Activity

上面其实就是手动创建activity,其实在Android Studio里可以快速创建activity。在包名右键就可以创建新的activity,我们创建的是空的activity,没有多少内容,其它的activity是集合了多个功能或者为某个场景提供的。这样创建,java类和布局文件还有注册都自动完成了,非常方便。
在这里插入图片描述

三、启动Activity

在AndroidManifest.xml对activity添加过滤器就会默认启动。那其他activity呢,要如何启动?这时候就要通过意图来启动,最简单的启动方式。
先在布局文件中中对按钮添加一个id,然后在代码中关联这个id获得这个按钮的对象,然后设置点击事件,在点击事件里,跳转到另外的activity。
按钮代码:

    <Button
        android:id="@+id/button"
        android:text="跳转按钮"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </Button>

java代码

public class MainActivity extends AppCompatActivity {
    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();//加载布局文件
        onClick();//管理所有的点击方法
    }
    public void initView(){
        mButton=findViewById(R.id.button);
    }
    public void onClick(){
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            	//跳转意图 setClass()来设置从MainActivity跳到SecondActivity。
                Intent intent=new Intent();
                intent.setClass(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }
}

四、关闭Activity

可以调用Activity的finish()来结束这个Activity,还可以通过调用finishActivity()结束之前启动的另一个Activity。

finish();

提示:一般情况下,不应该使用这些方法显式结束Activity,因为Android系统会为我们管理Activity的生命周期,调用这些方法可能会对用户造成不良影响。

五、Activity生命周期

Activity 基本上以三种状态存在:

  • Resumed
    此 Activity 位于屏幕前台并具有用户焦点。就是用户可以直接可见并操作到该Activity(有时也将此状态称作“运行中”)

  • Paused
    另一个 Activity 位于屏幕前台并具有用户焦点,但此 Activity 仍可见。也就是说,另一个 Activity 显示在此 Activity 上方,并且该 Activity 部分透明或未覆盖整个屏幕。 暂停的 Activity 处于完全活动状态,但在内存极度不足的情况下,可能会被系统终止。

  • Stopped
    该 Activity 被另一个 Activity 完全遮盖(该 Activity 目前位于“后台”)。 已停止的 Activity 同样仍处于活动状态。 不过,它对用户不再可见,在他处需要内存时可能会被系统终止。

实现生命周期回调方法


public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //第一次创建的时候被调用。
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    @Override
    protected void onStart() {
        super.onStart();
        //Activity要显式给用户之前调用。
    }

    @Override
    protected void onResume() {
        super.onResume();
        //Activity开始与用户交互之前使用,这时的Activity在栈顶,用户可以向其中输入。
    }

    @Override
    protected void onPause() {
        super.onPause();
        //当系统准备启动另一个正在恢复的Activity时调用。
    }

    @Override
    protected void onStop() {
        super.onStop();
        //当Activity不再对用户可见时调用,原因可能是它即将销毁。
        //或者其他Activity被恢复运行并要覆盖本Activity。
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        //Activity被停止后,又再次被启动之前调用。
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        /**
         *
         * 在 Activity 被销毁前调用。
         * 这是 Activity 将收到的最后调用。
         * 当 Activity 结束(有人对 Activity 调用了 finish()).
         * 或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。
         * 我们可以通过 isFinishing() 方法区分这两种情形。
         */
    }

}

如图就是Activity的生命周期图示
在这里插入图片描述
在这里插入图片描述以上就是Activity的基本使用和了解,其实Activity是一个非常庞大和复杂的东西,看似简单,但在实际的应用场景中还有很多的知识点和难点,等了解到更多的时候,就继续书写Activity的使用和知识。
感谢阅读~

六、参考文章

官方文档:
Google Android官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值