网站首页 > 教程分享 正文
#### 启停活动页面
- 启动和结束
// 从当前页面跳转到新的页面
startActivity(new Intent(source.this,target.class));
// eg
startService(new Intent(MainActivity.this, FloatingButtonService.class));
// 从当前页面回到上一个页面,相当于关闭当前页面,
finish(); // 结束当前的活动页面
- 生命周期
即状态转换的过程
Activity的七个生命周期方法
- onCreate:创建活动。把页面布局加载进内存,进入初始状态,这个方法会初始化setContentLayout()方法(屏幕绘制),
- onStart:开始活动。把活动页面显示在屏幕上。onCreate()方法完成后,此时activity进入了onStart()方法,当前activity是用户可见状态,但是还不能交互,在此可以做一些动画的初始化操作。
- onResume:恢复活动。onStart()后activity进入onResume方法,当前activity状态属于运行状态,(Running),此时的activity可见可交互。
- onPause:暂停活动。在系统进行另一个activity是调用,此时通常用于确认对于持久性的数据保存更改,动画的停止以及任何其他可能消耗cpu的内容,该方法执行后,下一个Activity才能开始执行,该方法执行后应该执行onStop()方法,
- onStop:停止活动。当Activity对于用户不在可见的时候调用,可能是被另一个Activity覆盖,或者退回到桌面,在onStop方法下系统内存紧张时,有可能会被系统回收,
- onDestory:销毁活动。在Activity被销毁前调用,这是Activity收到的最后调用,当Activity结束或者被系统销毁Activity实例的时候,会被调动该方法,
- onRestart:重启活动。在Activity被停止后再次启动的时候调用,比如从桌面回到应用中时,然后调用onStart方法().
- onNewIntent:重用已有的活动实例。(比较特殊的周期过程)
- 启动模式
Activity实例,以栈的形式进行存储,也就是所谓的任务栈先进后出。
主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作更改Activity的顺序。启动一个Application的时候,系统会为它默认创建一个对应的Task,用来放置根Activity。默认启动Activity会放在同一个Task中,新启动的Activity会被压入启动它的那个Activity的栈中,并且显示它。当用户按下回退键时,这个Activity就会被弹出栈,按下Home键回到桌面,再启动另一个应用,这时候之前那个Task就被移到后台,成为后台任务栈,而刚启动的那个Task就被调到前台,成为前台任务栈,手机页面显示的就是前台任务栈中的栈顶元素。
- 标准模式(standard)
- 栈顶复用模式(singleTop)
- 栈内复用模式(singleTask)
- 单例模式(singleInstance)
- 启动模式的设置
启动模式有2种设置方式:1、在AndroidMainifest设置、2、通过Intent设置标志位
- 在AndroidMainifest设置
打开AndroidMainifest.xml,给Activity节点添加属性android:launchMode,属性值填入standard表示采取标准模式,默认不添加也是标准模式。
<activity
android:name="com.demo.Main4Activity"
//通过android:launchMode属性设置
android:launchMode="singleTask"/>
- 通过Intent设置标志位
Intent inten = new Intent (ActivityA.this,ActivityB.class);
//通过Intent的Flag设置
// intent.addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
代码中的启动标志取值说明
|intent类的启动标志| 说明|
|-----| -----|
|FLAG_ACTIVITY_NEW_TASK |指定启动模式为栈内复用模式(SingleTask)。开辟一个新的任务栈。该值类似于standard;不同之处在于,如果原来不存在活动栈,则会创建一个活动栈|
|FLAG_ACTIVITY_SINGLE_TOP| 指定启动模式为栈顶复用模式(SingleTop)。等同于launchMode="singleTop",当栈顶为待转跳的活动实例时,则重用栈顶的实例|
|FLAG_ACTIVITY_CLEAR_TOP| 所有位于其上层的Activity都要移除,SingleTask模式默认具有此标记效果,但singelTask采用onNewIntent方法启动原任务,而它采用先调用onDestroy再调用onCreate来创建任务。当栈中存在待转跳的活动实例时,则重新创建一个新实例,并清除原实例上方的所有实例。|
|FLAG_ACTIVITY_NO_HISTORY|该标志与standard情况类似,但栈中不保存新的启动的活动实例,下次无论以何种方式再启动该实例,也要走standard模式的完整流程|
|FLAG_ACTIVITY_CLEAR_TASK|该标志非常暴力,转跳到新页面时,栈中的原有实例都被清空,注意该标志需要结合FLAG_ACTIVITY_NEW_TASK使用,即setFlags方法的参数为"FLAG_ACTIVITY_CLEAR_TASK|FLAG_ACTIVITY_NEW_TASK"|
应用实例
- 不来回跳转页面
// 创建一个意图对象,准备跳转到指定的活动页面
Intent intent = new Intent(this,JumpFirstActivity.class);
// 当栈中存在待转跳的活动实例时,则重新创建该活动的实例,并清除原实例上方的所有实例
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // 设置启动标志
startActivity(intent); // 转跳到意图指定的活动页面
- 登录成功后,不再返回登录页面
// 创建一个意图对象,准备跳转到指定的活动页面
Intent intent = new Intent(this,LoginSuccessActivity.class);
// 转跳到新的页面时,栈中的所有实例都被清空,同时开启新任务的活动栈
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); // 设置启动标志
startActivity(intent); // 转跳到意图指定的活动页面
猜你喜欢
- 2025-05-05 有了这份900多页的Android面试指南,你离大厂Offer还远吗?
- 2025-05-05 K2 Blackpearl 流程平台总体功能介绍:常规流程功能
- 2025-05-05 零基础安卓开发起步(一)(安卓开发入门视频)
- 2025-05-05 教程:让你的安卓像Windows一样实现程序窗口化运行
- 2025-05-05 Android事件总线还能怎么玩?(事件总线有什么好处)
- 2025-05-05 Android 面试被问“谈谈架构”,到底要怎样回答才好?
- 2025-05-05 Android开发工具Parcel和Serialize
- 2025-05-05 Android 中Notification的运用(notification widget安卓)
- 2025-05-05 Android退出所有Activity最优雅的方式
- 2025-05-05 MT管理器-简单实战-去除启动页(mt管理器怎么去除软件弹窗)
你 发表评论:
欢迎- 最近发表
-
- 有了这份900多页的Android面试指南,你离大厂Offer还远吗?
- K2 Blackpearl 流程平台总体功能介绍:常规流程功能
- 零基础安卓开发起步(一)(安卓开发入门视频)
- 教程:让你的安卓像Windows一样实现程序窗口化运行
- Android事件总线还能怎么玩?(事件总线有什么好处)
- Android 面试被问“谈谈架构”,到底要怎样回答才好?
- Android开发工具Parcel和Serialize
- Android 中Notification的运用(notification widget安卓)
- Android退出所有Activity最优雅的方式
- MT管理器-简单实战-去除启动页(mt管理器怎么去除软件弹窗)
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)