『Android基础入门』如何实现页面的跳转(任务栈机制)

359 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

👨‍🎓作者简介:一位喜欢写作,计科专业的大二菜鸟

🏡个人主页:starry陆离

🕒首发日期:2022年6月13日星期一

🌌上期文章:『Android基础入门』如何为控件添加响应

📚订阅专栏:『Android基础入门』如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦


『Android基础入门』如何实现页面的跳转(任务栈机制)

1.引言

此笔记是承上启下的,关于为页面添加响应的内容请详看【Android】如何为组件添加响应

要实现两个页面间的跳转,肯定要有两个界面,这里展示如何创建一个空的Activity文件

小贴士:

 //主动创建一个一个Activity会自动生成一个对应的xml文件
 //并且会在manifests中生成对用的activity的代码

image-20220422091919506

在新建的activity的xml布局文件下,创建几个新的组件

image-20220422092854790

2.实现页面跳转

在MainActivity中添加跳转,当点击跳转按钮就跳转到第二个界面

关键代码如下所示:

 //intent()方法有两个参数,前者是当前页面,后者是要跳转到的目标页面
         Button button=findViewById(R.id.button);
         
         button.setOnClickListener(
                 (view)->{
                     Intent intent=new Intent(MainActivity.this,MainActivity2.class);
                     startActivity(intent);
                 }
         );

同样的道理,我们为第二个界面也添加跳转,跳回到主界面

在MainActivity2的布局界面中我创建了一个id为imageView的组件,通过它绑定监听实现跳转

跳转

3.任务栈机制

但是这里有一个大问题,页面每跳转一次,其实就是新加载了一个页面,就如上图中的反复跳转,用户看到的是两个界面,其实后台已经加载了很多个同样的资源了,要解决资源浪费的问题,就要了解Android界面跳转的栈机制

 /*
 android的页面跳转机制
 任务栈机制
 先进后出
 运行一个app,相当于将app的首页压入运行任务栈,这时栈中只有MainACtivity1
 点击跳转
 finish()出栈
 用户看到的是栈顶端的页面
  */

这是当前的运行机制,页面每跳转一次,就新加载了一个页面到任务栈中,如果只入栈不出栈,栈满了程序就会异常退出

解决这个问题就是在每次跳转到新的界面的时,都先销毁当前界面,就是让它出栈,图示如下:

因此只需要再现有的代码前。加一行销毁当前界面即可