Android 退出app方式(回忆录)

2024-08-26 16:04

本文主要是介绍Android 退出app方式(回忆录),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、点击返回键或者设备back键调用finish


private void back(){finish();
}或@Overridepublic void onBackPressed() {super.onBackPressed();}

二、结束进程

android.os.Process.killProcess(android.os.Process.myPid());

三、方法二exit结束java虚拟机

System.exit(0);

四、根据Activity的生命周期

            Intent intent = new Intent(context, QrcodePage.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK |         Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);

五、常用的方法,使用Activity栈管理Activity

下面是工具类


/*** 界面管理*/public class ActivityUtil {private static final String TAG = "ActivityUtil";/*** 单一实例*/private static ActivityUtil sActivityUtil;/*** Activity堆栈 Stack:线程安全*/public Stack<Activity> mActivityStack = new Stack<>();/*** 私有构造器 无法外部创建*/private ActivityUtil() {}/*** 获取单一实例 双重锁定* @return this*/public static ActivityUtil getInstance() {if (sActivityUtil == null) {synchronized (ActivityUtil.class) {if (sActivityUtil == null) {sActivityUtil = new ActivityUtil();}}}return sActivityUtil;}/*** 添加Activity到堆栈*/public void addActivity(Activity activity) {mActivityStack.add(activity);}/*** 移除堆栈中的Activity* @param activity Activity*/public void removeActivity(Activity activity) {if (activity != null && mActivityStack.contains(activity)) {mActivityStack.remove(activity);}}/*** 获取当前Activity (堆栈中最后一个添加的)* @return Activity*/public Activity getCurrentActivity() {return mActivityStack.lastElement();}/*** 获取指定类名的Activity*/public Activity getActivity(Class<?> cls) {if (mActivityStack != null)for (Activity activity : mActivityStack) {if (activity.getClass().equals(cls)) {return activity;}}return null;}/*** 结束当前Activity (堆栈中最后一个添加的)*/public void finishCurrentActivity() {Activity activity = mActivityStack.lastElement();finishActivity(activity);}/*** 结束指定的Activity* @param activity Activity*/public void finishActivity(Activity activity) {if (activity != null && mActivityStack.contains(activity)) {mActivityStack.remove(activity);activity.finish();}}/*** 结束指定类名的Activity* @param clazz Activity.class*/public void finishActivity(Class<?> clazz) {for (Activity activity : mActivityStack) {if (activity.getClass().equals(clazz)) {finishActivity(activity);break;}}}/*** 结束所有Activity*/public void finishAllActivity() {for (int i = mActivityStack.size() - 1; i >= 0; i--) {if (mActivityStack.get(i) != null) {finishActivity(mActivityStack.get(i));}}mActivityStack.clear();}/*** 结束某个Activity之外的所有Activity*/public void finishAllActivityExcept(Class<?> clazz) {for (int i = mActivityStack.size() - 1; i >= 0; i--) {if (mActivityStack.get(i) != null && !mActivityStack.get(i).getClass().equals(clazz)) {finishActivity(mActivityStack.get(i));}}}/*** 退出应用程序*/public void exitApp() {try {finishAllActivity();} catch (Exception e) {e.printStackTrace();} finally {System.exit(0);}}/*** 判断某个Activity 界面是否在前台* @param context* @param className 某个界面名称* @return*/public static boolean  isForeground(Context context, String className) {if (context == null || TextUtils.isEmpty(className)) {return false;}ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(1);if (list != null && list.size() > 0) {ComponentName cpn = list.get(0).topActivity;if (className.equals(cpn.getClassName())) {return true;}}return false;}}

这篇关于Android 退出app方式(回忆录)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109027

相关文章

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

Java文件上传的多种实现方式

《Java文件上传的多种实现方式》文章主要介绍了文件上传接收接口的使用方法,包括获取文件信息、创建文件夹、保存文件到本地的两种方法,以及如何使用Postman进行接口调用... 目录Java文件上传的多方式1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用总结Java文件上传的多方式1

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模