android 返回到首页案例

news/2024/7/27 12:15:43/文章来源:https://blog.csdn.net/shi450561200/article/details/135572654

很多年前做Android开发,经常遇到页面跳转需要返回到指定页面的需求。现再次总结下:

一、ActivityA返回到ActivityB

ActivityA返回到ActivityB,回收掉中间页面

 Intent intent = new Intent(ActivityA.this,ActivityB.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);startActivity(intent);

二、逐级返回

在除首页外的每一个页面重写onActivityResult方法:

/*** 页面退出回调* Author:William(徐威)* Create Time:2018-07-31** @param requestCode* @param resultCode* @param data*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 0 && resultCode == RESULT_OK) {setResult(RESULT_OK);super.onDestroy();this.finish();}
}

在要返回的页面调用代码:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
setResult(RESULT_OK, intent);

注意:这里的ActivityB是指当前活动的上一层,写好之后,会自动层层返回至首页。

三、页面管理工具

    ActivityPageManager

*** Activity管理类* Created by Administrator on 2016/11/24.*/
public class ActivityPageManager {private static Stack<Activity> activityStack;private static ActivityPageManager instance;/*** constructor*/private ActivityPageManager() {}/*** get the AppManager instance, the AppManager is singleton.*/public static ActivityPageManager getInstance() {if (instance == null) {instance = new ActivityPageManager();}return instance;}/*** add Activity to Stack*/public void addActivity(Activity activity) {if (activityStack == null) {activityStack = new Stack<Activity>();}activityStack.add(activity);}/*** remove Activity from Stack*/public void removeActivity(Activity activity) {if (activityStack == null) {activityStack = new Stack<Activity>();}activityStack.remove(activity);}/*** get current activity from Stack*/public Activity currentActivity() {Activity activity = activityStack.lastElement();return activity;}/*** finish current activity from Stack*/public void finishActivity() {Activity activity = activityStack.lastElement();finishActivity(activity);}/*** finish the Activity*/public void finishActivity(Activity activity) {if (activity != null) {activityStack.remove(activity);activity.finish();activity = null;}}/*** finish the Activity*/public void finishActivity(Class<?> cls) {for (Activity activity : activityStack) {if (activity.getClass().equals(cls)) {finishActivity(activity);}}}/*** finish all Activity*/public void finishAllActivity() {if(activityStack!=null&&activityStack.size()>0){for (int i = 0, size = activityStack.size(); i < size; i++) {if (null != activityStack.get(i)) {activityStack.get(i).finish();}}activityStack.clear();}}/*** release all resourse for view* @param view*/public static void unbindReferences(View view) {try {if (view != null) {view.destroyDrawingCache();unbindViewReferences(view);if (view instanceof ViewGroup){unbindViewGroupReferences((ViewGroup) view);}}} catch (Throwable e) {// whatever exception is thrown just ignore it because a crash is// always worse than this method not doing what it's supposed to do}}private static void unbindViewGroupReferences(ViewGroup viewGroup) {int nrOfChildren = viewGroup.getChildCount();for (int i = 0; i < nrOfChildren; i++) {View view = viewGroup.getChildAt(i);unbindViewReferences(view);if (view instanceof ViewGroup)unbindViewGroupReferences((ViewGroup) view);}try {viewGroup.removeAllViews();} catch (Throwable mayHappen) {// AdapterViews, ListViews and potentially other ViewGroups don't// support the removeAllViews operation}}@SuppressWarnings("deprecation")private static void unbindViewReferences(View view) {// set all listeners to null (not every view and not every API level// supports the methods)try {view.setOnClickListener(null);view.setOnCreateContextMenuListener(null);view.setOnFocusChangeListener(null);view.setOnKeyListener(null);view.setOnLongClickListener(null);view.setOnClickListener(null);} catch (Throwable mayHappen) {}// set background to nullDrawable d = view.getBackground();if (d != null){d.setCallback(null);}if (view instanceof ImageView) {ImageView imageView = (ImageView) view;d = imageView.getDrawable();if (d != null){d.setCallback(null);}imageView.setImageDrawable(null);imageView.setBackgroundDrawable(null);}// destroy WebViewif (view instanceof WebView) {WebView webview = (WebView) view;webview.stopLoading();webview.clearFormData();webview.clearDisappearingChildren();webview.setWebChromeClient(null);webview.setWebViewClient(null);webview.destroyDrawingCache();webview.destroy();webview = null;}if (view instanceof ListView) {ListView listView = (ListView) view;try {listView.removeAllViewsInLayout();} catch (Throwable mayHappen) {}((ListView) view).destroyDrawingCache();}}/*** exit System* @param context*/public void exit(Context context) {exit(context, true);}/*** exit System* @param context* @param isClearCache*/@SuppressWarnings("deprecation")public void exit(Context context, boolean isClearCache) {try {finishAllActivity();if(context != null){ActivityManager activityMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityMgr.restartPackage(context.getPackageName());}
//      if(isClearCache){
//        LruCacheManager.getInstance().evictAll();
//        CacheManager.clearAll();
//      }System.exit(0);android.os.Process.killProcess(android.os.Process.myPid());} catch (Exception e) {e.printStackTrace();}}
}

返回直接调用 finishAllActivity

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_925340.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mp4文件全部转换为mp3

问题 今天突发奇想&#xff0c;想把mp4视频转换为mp3来收听&#xff0c;于是想到了ffmpeg工具 步骤 安装ffmpeg环境 要在 Windows 上配置 FFmpeg 环境&#xff0c;你可以按照以下步骤进行操作&#xff1a; 下载 FFmpeg&#xff1a; 首先&#xff0c;你需要下载 FFmpeg 的 W…

图像处理:孤立点的检测

图像处理-孤立点的检测 孤立点的检测在图像处理中通常涉及到检测图像中的突变或者边缘&#xff0c;而使用二阶导数是一种常见的方法。一阶导数可以帮助找到图像中的边缘&#xff0c;而二阶导数则有助于检测边缘上的峰值&#xff0c;这些峰值可能对应于孤立点或者特殊的图像结构…

如何在30秒内学会使用pprof分析Go

假设下面的代码是你要分析的 Go 代码&#xff1a; package mainimport ("fmt""sync""time" )// 模拟耗时操作 func hardWork(wg *sync.WaitGroup) {defer wg.Done()fmt.Printf("Start: %v\n", time.Now())// 模拟耗内存a : []string{…

[开发语言][c++]:Static关键字和全局变量

Static关键字和全局变量 1. 生命周期、作用域和初始化时机2. 全局变量3. Static 关键字3.1 面向过程3.1.1 静态全局变量3.1.2 静态局部变量&#xff08;单例中会使用&#xff09;3.1.3 静态函数 3.2 面向对象3.2.1 类内静态成员变量3.2.2 类内静态成员函数 Reference 写在前面&…

伪装目标检测模型论文阅读之:Zoom in and out

论文链接&#xff1a;https://arxiv.org/abs/2203.02688 代码;https://github.com/lartpang/zoomnet 1.摘要 最近提出的遮挡对象检测&#xff08;COD&#xff09;试图分割视觉上与其周围环境融合的对象&#xff0c;这在现实场景中是非常复杂和困难的。除了与它们的背景具有高…

C语言中关于指针的理解及用法

关于指针意思的参考&#xff1a;https://baike.baidu.com/item/%e6%8c%87%e9%92%88/2878304 指针 指针变量 地址 野指针 野指针就是指针指向的位置是不可知的&#xff08;随机的&#xff0c;不正确的&#xff0c;没有明确限制的&#xff09; 以下是导致野指针的原因 1.指针…

力扣每日一练(24-1-13)

如果用列表生成式&#xff0c;可以满足输出的型式&#xff0c;但是不满足题意&#xff1a; nums[:] [i for i in nums if i ! val]return len(nums) 题意要求是&#xff1a; 你需要原地修改数组&#xff0c;并且只使用O(1)的额外空间。这意味着我们不能创建新的列表&#xff…

【java八股文】之Spring系列篇

【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博…

ES6(ECMAScript 6.0)

ES6 学习链接ES6什么是ES6&#xff1f;ECMAScript 和 JavaScript 的关系 ECMAScript各版本新增特性ES6 块级作用域 let 学习链接 ES6简介 ECMAScript简介及特性&#xff08;科普&#xff01;很详细&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 20分钟上手ES…

OpenHarmony基于HDF简单驱动开发实例

OpenHarmony基于HDF简单驱动开发实例 背景 OpenHarmony-3.0-LTS qemu_small_system_demo liteos_a qemu 添加配置 device/qemu/arm_virt/liteos_a/hdf_config/device_info/device_info.hcs device_info 新增&#xff1a; sample_host :: host {hostName "sample…

Docker 配置国内镜像源加速

1. 国内镜像源总览 名称路径中国官方镜像https://registry.docker-cn.com网易163镜像http://hub-mirror.c.163.com中科大镜像https://docker.mirrors.ustc.edu.cn阿里云镜像https://[xxx].mirror.aliyuncs.com 2. 阿里云镜像源 地址&#xff1a;https://cr.console.aliyun.c…

基于Java SSM框架实现医院管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现医院管理系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring属于…

尼科彻斯定理----C语言

大家好我是Beilef许久未见了&#xff0c;小弟学校考试刚结束。这个过程懂的都懂。痛------ 文章目录 目录 文章目录 前言(一不好懂可以直接跳到二&#xff09; 一、尼科彻斯定理是什么&#xff1f; 二、尼科彻斯定理解析 这是ai的回答 尼科彻斯定理&#xff08;Nikomačs theor…

计算机网络 —— 数据链路层

数据链路层 3.1 数据链路层概述 数据链路层把网络层交下来的数据构成帧发送到链路上&#xff0c;以及把收到的帧数据取出并上交给网络层。链路层属于计算机网络的底层。数据链路层使用的信道主要由以下两种类型&#xff1a; 点对点通信。广播通信。 数据链路和帧 链路&…

京东年度数据报告-2023全年度笔记本十大热门品牌销量(销额)榜单

2023年度&#xff0c;在电脑办公市场整体销售下滑的环境下&#xff0c;笔记本市场的整体销售也不景气。 根据鲸参谋平台的数据显示&#xff0c;京东平台上笔记本的年度销量为650万&#xff0c;同比下滑约16%&#xff1b;销售额约为330亿&#xff0c;同比下滑约19%。同时&#…

基于ssm的实验室排课系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#x…

【k8s】Kubernetes 声明式 API、命令式

1. 资源管理方式&#xff1a; 1>. 命令式对象管理∶直接使用命令去操作kubernetes资源 kubectl run nginx-pod --imagenginx:1.17.1 --port802>. 命令式对象配置∶通过命令配置和配置文件去操作kubernetes资源 kubectl create/patch -f nginx-pod.yaml3>. 声明式对…

CSS 选择器全攻略:从入门到精通(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

环境变量详细说明

Windows之系统环境变量 配置操作&#xff1a; 计算机→属性→高级系统设置→高级→环境变量 系统变量→新建&#xff1a;JAVA_HOME 变量值&#xff1a;C:\Program Files\Java\jdk1.8.0_121 系统变量→Path→编辑&#xff1a;在变量值最后输入 &#xff1a;%JAVA_HOME%\bin;%J…

Linux基础工具的使用(yum,vim,gcc,g++,gdb,make/makefile)【详解】

目录 linux软件包管理器-yum什么是软件包&#xff1f;查找软件包如何安装软件卸载软件 linux编辑器 - vimvim的基本概念vim模式之间的切换vim命令模式各命令汇总vim底行模式各命令汇总 Linux编译器 - gcc/ggcc/g的作用gcc/g选项预处理编译汇编链接静态库与动态库 Linux调试器 -…