小伙伴们,在之前的系列文章我们分别介绍了Android视图组件及布局相关的内容,从本文开始我们继续盘点介绍Android开发中另一个比较重要的内容,Android四大组件,第一个 Activity。
Activity是Android应用程序的一个核心组件,用于提供用户界面和交互。每个Activity都对应着一个屏幕上的窗口,用户在不同的Activity之间进行切换来完成不同的功能。
以下是关于Activity的一些重要信息:
Activity常见属性和方法如下:
属性:
IntentFilter
:定义在清单文件中的Intent过滤器,用于指定Activity可以响应的Intent类型。
Intent
:Activity接收到的意图对象,包含了启动Activity的相关信息,如数据、标志位等。
Window
:代表Activity的窗口,可以用来设置标题栏、背景色等窗口属性。
FragmentManager
:管理Activity中的Fragment,用于添加、替换和移除Fragment。
ActionBar
:操作栏,可以在Activity中显示应用程序的标题、导航按钮等。
LayoutInflater
:用于动态加载布局文件。可以通过getLayoutInflater()方法获取当前Activity的LayoutInflater对象。
Resources
:提供访问资源文件的方法,如字符串、图片等。可以通过getResources()方法获取当前Activity的Resources对象。
方法:
onCreate()
:生命周期方法,在Activity创建时调用,可以进行初始化操作。
onStart()
:生命周期方法,在Activity变得可见但还无法与用户交互之前调用。
onResume()
:生命周期方法,在Activity变得可见且可以与用户交互之前调用。
onPause()
:生命周期方法,在Activity失去焦点但仍可见时调用,用于保存轻量级的UI状态或停止一些不必要的资源消耗。
onStop()
:生命周期方法,在Activity完全不可见时调用,用于释放占用的资源。
onDestroy()
:生命周期方法,在Activity销毁之前调用,用于释放所有的资源和执行最终的清理操作。
onActivityResult()
:用于接收其他Activity返回的结果,通过Intent对象获取返回的数据。
startActivity()
:启动另一个Activity,参数为目标Activity的Intent对象。
finish()
:关闭当前Activity,返回到上一个Activity。
setResult()
:设置当前Activity的返回结果,通过Intent对象传递数据给上一个Activity。
getSupportFragmentManager()
:获取Activity中的FragmentManager对象,用于管理Fragment。
setTitle()
:设置Activity的标题。
findViewById()
:通过ID查找布局文件中的UI组件。
setContentView()
:设置Activity的布局文件。
以下是一个简单的Activity案例:
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 在布局文件中定义了一个按钮,通过findViewById获取对应的Button对象
button = findViewById(R.id.button);
// 设置按钮的点击事件监听器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 创建一个意图对象,用于启动另一个Activity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}
Activity的生命周期是指从Activity创建到销毁的整个过程,可以分为以下几个阶段:
onCreate()
:在Activity首次创建时调用,进行一些初始化操作,如设置布局、获取资源等。onStart()
:当Activity变得可见但还无法与用户交互时调用。此时Activity仍然位于前台,但未获得焦点。onResume()
:在Activity变得可见并能够与用户交互之前调用,此时Activity位于前台并获得了焦点。在这个阶段,Activity处于活动状态,可以响应用户的输入事件。onPause()
:当Activity失去焦点但仍然可见时调用,通常是因为有其他Activity被部分遮挡或者弹出对话框等情况。在此方法内可以执行一些轻量级的释放资源的操作,但不应该做耗时操作。onStop()
:当Activity完全不可见时调用,比如另一个Activity覆盖在其上面,或者按下了返回键回到了上一个Activity。在此方法内可以执行一些释放资源的操作。onDestroy()
:在Activity即将销毁时调用,可以进行最后的资源释放和清理工作。onRestart()
:当已停止的Activity再次启动时调用,此方法在Activity从后台重新回到前台时调用。在Activity生命周期中,一般情况下,一个Activity在onCreate()
、onStart()
和 onResume()
方法之间转换表示进入前台运行状态,而在onPause()
、onStop()
和 onDestroy()
方法之间转换表示退出前台运行状态。
需要注意的是,当系统资源不足或内存紧张时,可能会触发Activity的销毁和重建,这时会调用相应的生命周期方法。因此,开发者应该在适当的生命周期方法中保存和恢复Activity的状态,以保证数据的一致性。
另外,可以通过重写对应的生命周期方法来执行自定义操作,如注册/注销广播接收器、开始/停止定时任务等,以便在不同生命周期状态下执行相应的逻辑。
Activity可以通过多种方式进行启动,其中常见的包括:
显式启动: 通过指定目标Activity的类名启动,使用startActivity()
方法或者更加灵活的Intent
对象来实现。例如:
Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
startActivity(intent);
隐式启动: 通过指定Action、Category和Data等属性,将启动请求发送给系统让其自行匹配合适的Activity进行启动。一般与IntentFilter
结合使用。例如:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.example.com"));
startActivity(intent);
startActivityForResult()启动: 当需要获取目标Activity返回的结果时,可以使用startActivityForResult()
方法启动,并在目标Activity中调用setResult()
方法设置返回结果。例如:
Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
startActivityForResult(intent, requestCode);
在目标Activity中设置返回结果:
Intent resultIntent = new Intent();
resultIntent.putExtra("result_data", data);
setResult(Activity.RESULT_OK, resultIntent);
finish();
SingleTop模式: 当要启动的Activity已经位于任务栈栈顶时,会复用该Activity实例,调用其onNewIntent()
方法传递新的启动意图。
SingleTask模式: Activity设置为SingleTask模式后,系统会为其创建一个新的任务栈,并且同一任务栈中只会存在一个该Activity实例。如果该Activity已经存在于其他任务栈中,则会切换到该任务栈并调用其onNewIntent()
方法。
SingleInstance模式: Activity设置为SingleInstance模式后,系统会为其创建一个独立的任务栈,并且整个系统中只会存在一个该Activity实例。
总之,Activity是Android应用程序开发的重要组件,它处理用户界面和交互,并提供了生命周期管理、布局和视图管理、意图启动等核心功能,帮助开发者构建丰富、交互性强的应用程序。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有