浙江省住房和城乡建设局网站首页,赣州推广平台,广州市建设招标管理办公室网站,邹平做网站哪家好目录
前言
一、Activity简介 二、任务栈相关概念
三、常用Flag
四、结束当前Activity
五、Intent跳转Activity
六、更多资源 前言 Android是目前全球最流行的移动操作系统之一#xff0c;而Activity作为Android应用程序的四大组件之一#xff0c;是Android应用程序的核…目录
前言
一、Activity简介 二、任务栈相关概念
三、常用Flag
四、结束当前Activity
五、Intent跳转Activity
六、更多资源 前言 Android是目前全球最流行的移动操作系统之一而Activity作为Android应用程序的四大组件之一是Android应用程序的核心之一。学习Activity组件对于Android开发者来说是非常重要的因为它是Android应用程序的入口负责管理应用程序的生命周期、处理用户交互等重要任务。 本篇文章将深入学习Activity组件包括Activity的生命周期、启动模式、任务栈等重要概念以及如何在应用程序中使用Activity组件。通过本文的学习读者将能够深入了解Activity组件的工作原理掌握Activity的使用方法为开发高质量的Android应用程序打下坚实的基础。
一、Activity简介 Activity是四大组件中最重要的一个也是平时开发中接触最多的。与Activity启动行为相关的就是它的启动模式Standard、SingleTop、SingleTask、SingleInstance这4种launchMode相信大家不陌生。 OK熟悉了4种launchMode后相信你已经对Activity任务栈有一些理解了能应对一些常见的开发场景了。然而除了4种launchMode还有更复杂的控制Activity行为的方式那就是给启动Activity的Intent添加flag使用 Intent.addFlags(int flags) 方法。 看一下这个方法的参数总共有20种 Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT,Intent.FLAG_ACTIVITY_CLEAR_TASK,Intent.FLAG_ACTIVITY_CLEAR_TOP,Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,Intent.FLAG_ACTIVITY_FORWARD_RESULT,Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY,Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT,Intent.FLAG_ACTIVITY_MULTIPLE_TASK,Intent.FLAG_ACTIVITY_NEW_DOCUMENT,Intent.FLAG_ACTIVITY_NEW_TASK,Intent.FLAG_ACTIVITY_NO_ANIMATION,Intent.FLAG_ACTIVITY_NO_HISTORY,Intent.FLAG_ACTIVITY_NO_USER_ACTION,Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED,Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS,Intent.FLAG_ACTIVITY_SINGLE_TOP,Intent.FLAG_ACTIVITY_TASK_ON_HOME, 二、任务栈相关概念 在分析具体的flag之前介绍一些Activity任务栈相关的概念Activity、task、tasks、recent tasks list。这些概念都是抽象的除了Activity和recent tasks list看得见之外其他都是看不见摸不着的。
1.Activity 活动这个就不用解释了
2.task 任务 它是应用中的放置活动的一个类似于栈的结构。栈顶的是最上面的活动也就是用户直接看到的页面顶部以下的活动都处于onStop状态如果是可见的那么处于onPause状态。一般连续按返回键能自顶向下销毁活动。上图中的悬浮窗表示一个任务在这个任务中启动了20多个活动。
3. tasks 一个应用的所有任务 虽然单个task是比较常见的应用但是一个应用可以有多个task创建新的task有好几种方法。
4. recent tasks list 最近任务列表 老的安卓系统中长按home键出现的页面新的系统直接按导航栏中的正方形按钮。这个列表表示最近启动的应用的tasks表中每一项表示一个入口。需要注意的是一个应用可能会出现多个入口因为应用可能有多个任务当然不一定每个任务都会出现在列表中。
三、常用Flag
1.FLAG_ACTIVITY_NEW_TASK 设置这个flag新启动的activity就会被放置到一个新的任务当中与singleTask有点类似但不完全一样当然这里讨论的还是启动其他应用程序的activity。这个flag的作用通常是模拟一种Launcher的行为即列出一推可以启动的东西但启动的每一个Activity都是在运行在自己独立的任务当中的。
2.FLAG_ACTIVITY_CLEAR_TOP 设置了这个flag如果要启动的Activity在当前任务中已经存在了并且还处于栈顶的位置那么就不会再次创建这个Activity的实例而是直接调用它的onNewIntent()方法。这种flag和在launchMode中指定singleTop模式所实现的效果是一样的。
3.FLAG_ACTIVITY_SINGLE_TOP 设置了这个flag如果要启动的Activity在当前任务中已经存在了就不会再次创建这个Activity的实例而是会把这个Activity之上的所有Activity全部关闭掉。比如说一个任务当中有A、B、C、D四个Activity然后D调用了startActivity()方法来启动B并将flag指定成FLAG_ACTIVITY_CLEAR_TOP那么此时C和D就会被关闭掉现在返回栈中就只剩下A和B了。
四、结束当前Activity
方法1
finish();方法2
System.exit(0);方法3
android.os.Process.killProcess(android.os.Process.myPid());方法4
this.onDestory();
五、Intent跳转Activity 1.假设目前已经启动了3个Activity分别叫做FirstActivity,SecondActivity,ThirdActivity现在想在ThirdActivity中跳转至FirstActivity即再启动一个FirstActivity但不是变成1,2,3,1而是变成1即销毁掉中间所有的activity同时要求保留FirstActivity上的数据。
Intent intent new Intent(this,FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//关掉所要到的界面中间的activity
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//设置不要刷新将要跳转的界面
startActivity(intent);
2.与1类似假设目前已经启动了3个Activity分别叫做FirstActivity,SecondActivity,ThirdActivity现在想在ThirdActivity中跳转至FirstActivity即再启动一个FirstActivity但不是变成1,2,3,1而是变成1即销毁掉中间所有的activity这里要求不保留FirstActivity上的数据。
Intent intent new Intent(this,FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//关掉所要到的界面中间的activity
startActivity(intent);
3.假设目前已经启动了3个Activity分别叫做FirstActivity,SecondActivity,ThirdActivity
Intent intent new Intent(this,FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);六、更多资源 ✨还可以关注宫纵号《编程乐学》菜单栏有很多优质的开源项目以及更多的编程资料等你来学习。