Android开发--Lesson03--Activity活动单元

一.Activity的生命周期

在Android开发中,Activity的生命周期是指一个Activity从创建到销毁的整个过程中的不同状态。理解Activity的生命周期对于管理资源、保存和恢复数据以及确保应用的稳定性和性能至关重要。

以下是Activity的主要生命周期方法:

  1. onCreate():当Activity第一次被创建时调用。在这个方法中通常会进行所有的静态设置,比如声明用户界面、定义变量等。

  2. onStart():当Activity对用户即将可见时调用。紧跟在onCreate()之后或者当Activity从停止状态恢复时调用。

  3. onResume():当Activity开始与用户交互时调用。此时Activity位于屏幕前台并且用户可以开始与之互动。

  4. onPause():当另一个Activity或对话框获取焦点,当前Activity不再位于前台但仍然部分可见时调用。这是暂停播放音乐或停止动画等操作的好地方。

  5. onStop():当Activity对用户不再可见时调用。可能是因为另一个Activity已经启动并完全覆盖了它,或者是当前Activity正在被销毁。

  6. onRestart():当Activity从停止状态重新启动时调用。即在Activity从onStop()返回到onStart()的过程中。

  7. onDestroy():在Activity被销毁之前调用。这可能是由于用户选择关闭Activity,或者系统为了回收内存而销毁Activity。

Java代码:

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
        // 打印日志信息,表示调用了onCreate方法
        Log.i("MainActivity","调用了onCreate方法");

    }

    @Override
    protected void onStart() {
        // 重写onStart方法
        super.onStart();
        // 打印日志信息
        Log.i("MainActivity","调用了onStart方法");
    }

    @Override
    protected void onResume() {
        // 重写onResume方法
        super.onResume();
        // 打印日志信息
        Log.i("MainActivity","调用了onResume方法");
    }

    @Override
    protected void onPause() {
        // 重写onPause方法
        super.onPause();
        // 打印日志信息
        Log.i("MainActivity","调用了onPause方法");
    }

    @Override
    protected void onStop() {
        // 重写onStop方法
        super.onStop();
        // 打印日志信息
        Log.i("MainActivity","调用了onStop方法");
    }

    @Override
    protected void onDestroy() {
        // 重写onDestroy方法
        super.onDestroy();
        // 打印日志信息
        Log.i("MainActivity","调用了onDestroy方法");
    }

    @Override
    protected void onRestart() {
        // 重写onRestart方法
        super.onRestart();
        // 打印日志信息
        Log.i("MainActivity","调用了onRestart方法");
    }
}

 

 如上图就是在程序运行的时候logCat打印出的信息,可以看出每个状态都调用了那些方法

二.开启和关闭Activity

Intent对象在Android开发中扮演着非常重要的角色,它是一种消息传递机制,用于在不同的组件(如Activity、Service、Broadcast Receiver等)之间传递信息。通过Intent,你可以执行诸如启动新的Activity、启动服务、发送广播等操作。

活动Activity:

   // 为按钮bt1设置点击事件监听器
        bt1.setOnClickListener((v1)->{
            // 创建一个Intent对象
            Intent intent = new Intent(MainActivity.this,SecondActivity.class);
            // 启动新的Activity
            startActivity(intent);
        });

 

非活动Activity:

Button btn1 = findViewById(R.id.bt2);
        btn1.setOnClickListener((v)->{
            finish();
        });

如上设置之后就可以,可以实现设置两个Activity的跳转,当然Main_Activity依旧是主Activity,而调动出来的Activity只是覆盖在它的上面,调用finish方法可以结束调动回到Main_Activity

初次之外还可以使用AndroidManifest.xml文件,配置IntentFilter进行切换:

<intent-filter>
    <action android:name="com.example.class04.StartSecond"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

 

 Button bt1 =  findViewById(R.id.bt1);
        // 为按钮bt1设置点击事件监听器
        bt1.setOnClickListener((v1)->{
            // 创建一个Intent对象
            Intent intent = new Intent();
            // 设置Intent的Action为com.example.class04.StartSecond
            intent.setAction("com.example.class04.StartSecond");
            startActivity(intent);
        });

 

使用Intent(意图)调动电话,然后拨打号码:

        // 获取按钮bt1的实例
        Button bt1 =  findViewById(R.id.bt1);
        // 为按钮bt1设置点击事件监听器
        bt1.setOnClickListener((v1)->{
            // 创建一个Intent对象
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_DIAL);
           intent.setData(Uri.parse("tel:"+"10086"));
            startActivity(intent);
        });

 

使用Intent意图打开网站:

       // 获取按钮bt1的实例
        Button bt1 =  findViewById(R.id.bt1);
        // 为按钮bt1设置点击事件监听器
        bt1.setOnClickListener((v1)->{
            // 创建一个Intent对象
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("https://www.baidu.com"));
            startActivity(intent);
        });

 

使用Intent(意图)发送文本信息,但是需要选择发送信息的软件:

        // 获取按钮bt1的实例
        Button bt1 =  findViewById(R.id.bt1);
        // 为按钮bt1设置点击事件监听器
        bt1.setOnClickListener((v1)->{
            // 创建一个Intent对象
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SEND);
            intent.putExtra(Intent.EXTRA_TEXT,"hello");
            intent.setType("text/plain");
            // 启动新的Activity
            startActivity(intent);
        });

 

 

 三.Activity之间的跳转(携带参数)

在Android中,putExtra() 方法是 Intent 类中的一个方法,用于向 Intent 对象添加额外的数据(即键值对)。这个方法允许你将数据从一个组件传递到另一个组件,比如从一个 Activity 传递到另一个被启动的 Activity。这对于在不同组件之间共享数据非常有用。

当你想要通过 Intent 传递一些简单的数据类型(如字符串、整数、布尔值等)时,可以使用 putExtra() 方法。

  // 获取按钮bt1的实例
        Button bt1 =  findViewById(R.id.bt1);
        // 为按钮bt1设置点击事件监听器
        bt1.setOnClickListener((v1)->{
            // 创建一个Intent对象
            Intent intent = new Intent();
            // 启动新的Activity
            intent.putExtra("value","hello,world");
            startActivity(intent);
        });

 

获取前一个页面传递的数据:

Intent intent = getIntent();
        tv.setText(intent.getStringExtra("value"));

 

posted @ 2025-03-21 22:04  回忆也交给时间  阅读(56)  评论(0)    收藏  举报