Android开发--Lesson03--Activity活动单元
一.Activity的生命周期
在Android开发中,Activity的生命周期是指一个Activity从创建到销毁的整个过程中的不同状态。理解Activity的生命周期对于管理资源、保存和恢复数据以及确保应用的稳定性和性能至关重要。
以下是Activity的主要生命周期方法:
-
onCreate():当Activity第一次被创建时调用。在这个方法中通常会进行所有的静态设置,比如声明用户界面、定义变量等。
-
onStart():当Activity对用户即将可见时调用。紧跟在
onCreate()
之后或者当Activity从停止状态恢复时调用。 -
onResume():当Activity开始与用户交互时调用。此时Activity位于屏幕前台并且用户可以开始与之互动。
-
onPause():当另一个Activity或对话框获取焦点,当前Activity不再位于前台但仍然部分可见时调用。这是暂停播放音乐或停止动画等操作的好地方。
-
onStop():当Activity对用户不再可见时调用。可能是因为另一个Activity已经启动并完全覆盖了它,或者是当前Activity正在被销毁。
-
onRestart():当Activity从停止状态重新启动时调用。即在Activity从
onStop()
返回到onStart()
的过程中。 -
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"));