android核心组件Activity的跳转
Activity简介
Activity是android应用程序的界面。
每个应用程序往往都存在多个Activity,即存在多个界面,各个界面之间根据一定的逻辑规则互换显示。
Activity的本质是一个java类,在一般情况下,可认为每个界面均是一个Activity,
也就是说Activity的数量与界面的数量是一一对应的。
Activity通常用于处理UI相关的操作,例如UI控件的加载、配置及响应等等。
从理论上说,在Activity中可以完成所有任务的处理,包括下载文件等,但并不是最合适的做法
界面的组成: Activity是用于处理界面的java类,即处理界面相关的程序,而界面外观的设计往往通过使用xml
进行配置,这些xml文件称之为“布局文件”,存放于项目的res文件夹下的layout系类文件夹中。
布局文件的加载:使用eclipse创建Activity时默认会重写Activity中的onCreate()方法,并在该方法中调用setContentView()方法
设置需要显示到界面的布局,实现界面的显示。
开发人员也可以通过程序创建需要显示的界面,但使用代码创建界面中各个控件的实现成本较高,一般不推荐。
在创建Activity项目时,开发工具默认会创建一个MainActivity,开发人员可以根据需求创建若干个Activity。
配置入口的Activity:
尽管任何一个android应用程序中都可以有若干个Activity,但一定仅有一个Activity作为入口Activity,
即新打开应用程序时,显示的第一个Activity。
在AndroidMainfest.xml文件中,可以为每个Activity都添加入口的配置代码,但在程序运行之前,系统会对Androidmainfest.xml文件从上至下解析,
当解析到第一个匹配项时即终止,也就是说第1个存在入口配置的Activity将被启动。
综上所述,当尝试启动一个Android应用程序时:
1 系统将解析该应用程序的AndroidMainfest.xml文件,尝试检索到入口Activity;
2 运行入口Activity的程序,即Activity的java类,并自动调用onCreate()方法,在
onCreate()方法执行的过程中,setContentView()方法将被调用,则setContentView()
参数对应的布局被加载,完成界面的初始化。
Androidmainfest.xml与系统组件
在Android中存在4个系统组件,分别是:Activity、Service(服务)、ContentProvider(内容提供者),
BroadcastReceiver(广播接收着),这些系统组件将由Android系统对他们进行管理和维护,开发人员不需要,也无权维护,但他们必须在AndroidMainfest.xml文件中的
<application>节点下进行配置,通常称之为注册。
直接启动Activity
激活Activity
Activity作为Android中的系统组件,其实例的创建、销毁过程都是由系统完成的。
每次Activity北显示,都有可能是“创建实例->显示”或者是“实例已存在,直接显示”
的过程,启动Activity,也被称之为激活Activity。
在Android中,激活系统组件需要使用Intent对象。
Intent(意图)在Android系统中主要用于:
激活系统组件;
在组件之间传递数据。
使用Intent激活Activity的步骤:
1 创建Intent对象,并通过构造方法Intent(Context packageContext,class<?>cls)设置需要激活的Activity;
2 调用startActivity(Intent intent)方法。
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
启动带返回值的Activity
在一些应用场景中,需要在启动一个Activity并完成相关的业务之后,向他的启动源(
启动这个Activity的前一个Activity)返回一些信息,典型的例如验证用户操作。
在启动源中,需要调用startActivityForResult()方法激活新的Activity;
public void startActivityForResult(Intent intent,int requestCode)
当被启动的Activity返回结果时,启动源的onActivityResult()方法会被回调。
protected void onActivityResult(int requestCode ,int resultCode,Intent data)
在被启动的Activity中添加返回数据
在被启动的Activity中,开发人员应该将数据添加(封装)到Intent对象中,并调用setResult()方法。
public void setResult(int reslutCode,Intent data)
当被启动的Activity结束时,启动源中的onActivityResult()方法会被回调,结束Activity可调用finish()方法。
public void finish()
关闭Activity
当开发人员确定Activity已经不再需要再次使用时,可以调用finish()方法结束当前Activity;
当调用finish()方法时,Activity的onDestroy()方法会被回调,开发人员可以重写该方法,
并在该方法中实现释放资源的相关代码。
protected void onDestroy()
当Activity被关闭时,如果它是通过startActivityForResult()方法激活的,则启动源(激活塔德Activity )
的onActivityResult()方法将被回调。
开发人员也可以调用finishActivity()方法关闭Activity。
public void finishActivity(int requestCode)
该方法并不用于关闭自身,而是关闭通过startActivityForResult()激活的Activity,由于startActivityForResult()激活的Activity可能有多个,所以能被该方法关闭的Activity也可以有多个,finishActivity()的参数即为调用startActivityForResult()时的参数
requestCode.
如果requestCode可以匹配多个Activity,则这些Activity将全部被关闭。
定义一个应用程序级别的全局变量,使用集合类型记录下每个启动过的Activity,当需要全部关闭时,遍历该集合逐一关闭即可。
Activity是android应用程序的界面。
每个应用程序往往都存在多个Activity,即存在多个界面,各个界面之间根据一定的逻辑规则互换显示。
Activity的本质是一个java类,在一般情况下,可认为每个界面均是一个Activity,
也就是说Activity的数量与界面的数量是一一对应的。
Activity通常用于处理UI相关的操作,例如UI控件的加载、配置及响应等等。
从理论上说,在Activity中可以完成所有任务的处理,包括下载文件等,但并不是最合适的做法
界面的组成: Activity是用于处理界面的java类,即处理界面相关的程序,而界面外观的设计往往通过使用xml
进行配置,这些xml文件称之为“布局文件”,存放于项目的res文件夹下的layout系类文件夹中。
布局文件的加载:使用eclipse创建Activity时默认会重写Activity中的onCreate()方法,并在该方法中调用setContentView()方法
设置需要显示到界面的布局,实现界面的显示。
开发人员也可以通过程序创建需要显示的界面,但使用代码创建界面中各个控件的实现成本较高,一般不推荐。
在创建Activity项目时,开发工具默认会创建一个MainActivity,开发人员可以根据需求创建若干个Activity。
配置入口的Activity:
尽管任何一个android应用程序中都可以有若干个Activity,但一定仅有一个Activity作为入口Activity,
即新打开应用程序时,显示的第一个Activity。
在项目的根目录下,androidMainfest.xml文件中即配置了入口Activity。
<intent-fliter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
在AndroidMainfest.xml文件中,可以为每个Activity都添加入口的配置代码,但在程序运行之前,系统会对Androidmainfest.xml文件从上至下解析,
当解析到第一个匹配项时即终止,也就是说第1个存在入口配置的Activity将被启动。
综上所述,当尝试启动一个Android应用程序时:
1 系统将解析该应用程序的AndroidMainfest.xml文件,尝试检索到入口Activity;
2 运行入口Activity的程序,即Activity的java类,并自动调用onCreate()方法,在
onCreate()方法执行的过程中,setContentView()方法将被调用,则setContentView()
参数对应的布局被加载,完成界面的初始化。
Androidmainfest.xml与系统组件
在Android中存在4个系统组件,分别是:Activity、Service(服务)、ContentProvider(内容提供者),
BroadcastReceiver(广播接收着),这些系统组件将由Android系统对他们进行管理和维护,开发人员不需要,也无权维护,但他们必须在AndroidMainfest.xml文件中的
<application>节点下进行配置,通常称之为注册。
直接启动Activity
激活Activity
Activity作为Android中的系统组件,其实例的创建、销毁过程都是由系统完成的。
每次Activity北显示,都有可能是“创建实例->显示”或者是“实例已存在,直接显示”
的过程,启动Activity,也被称之为激活Activity。
在Android中,激活系统组件需要使用Intent对象。
Intent(意图)在Android系统中主要用于:
激活系统组件;
在组件之间传递数据。
使用Intent激活Activity的步骤:
1 创建Intent对象,并通过构造方法Intent(Context packageContext,class<?>cls)设置需要激活的Activity;
2 调用startActivity(Intent intent)方法。
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
启动带返回值的Activity
在一些应用场景中,需要在启动一个Activity并完成相关的业务之后,向他的启动源(
启动这个Activity的前一个Activity)返回一些信息,典型的例如验证用户操作。
在启动源中,需要调用startActivityForResult()方法激活新的Activity;
public void startActivityForResult(Intent intent,int requestCode)
当被启动的Activity返回结果时,启动源的onActivityResult()方法会被回调。
protected void onActivityResult(int requestCode ,int resultCode,Intent data)
在被启动的Activity中添加返回数据
在被启动的Activity中,开发人员应该将数据添加(封装)到Intent对象中,并调用setResult()方法。
public void setResult(int reslutCode,Intent data)
当被启动的Activity结束时,启动源中的onActivityResult()方法会被回调,结束Activity可调用finish()方法。
public void finish()
代码
protected static final int REQUEST_CODE = 998;
Intent intent = new Intent(getApplicationContext(),LoginActivity.class);
startActivityForResult(intent,REQUEST_CODE);
protected void onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode == REQUEST_CODE && resultCode == RESULT_OK){
String user = data.getStringExtra("username");
TextView userTextView =(TextView)findViewById(R.id.login_user);
userTextView.setText(user);
userTextView.setVisibility(View.VISIBLE);
mLoginButton.setVisibility(View.GONE);
}
}
EditText userEditText = (EditText)findViewById(R.id.edit);
String user = userrEditText.getText().toString();
Intent intent = new Intent();
intent.putExtra("username",user);
setResult(RESULT_OK,intent);
finish();
关闭Activity
当开发人员确定Activity已经不再需要再次使用时,可以调用finish()方法结束当前Activity;
当调用finish()方法时,Activity的onDestroy()方法会被回调,开发人员可以重写该方法,
并在该方法中实现释放资源的相关代码。
protected void onDestroy()
当Activity被关闭时,如果它是通过startActivityForResult()方法激活的,则启动源(激活塔德Activity )
的onActivityResult()方法将被回调。
开发人员也可以调用finishActivity()方法关闭Activity。
public void finishActivity(int requestCode)
该方法并不用于关闭自身,而是关闭通过startActivityForResult()激活的Activity,由于startActivityForResult()激活的Activity可能有多个,所以能被该方法关闭的Activity也可以有多个,finishActivity()的参数即为调用startActivityForResult()时的参数
requestCode.
如果requestCode可以匹配多个Activity,则这些Activity将全部被关闭。
定义一个应用程序级别的全局变量,使用集合类型记录下每个启动过的Activity,当需要全部关闭时,遍历该集合逐一关闭即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理