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

相关文章

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk