通用于Activity管理和应用程序退出

YOLOv8n行人检测实战:从数据集准备到模型训练 本文详细介绍了使用YOLOv8n进行行人检测的完整流程。首先阐述了YOLOv8的优势:高速推理(300+FPS)、更高精度、易用性轻量化(仅6MB)。接着通过Docker搭建GPU训练环境,配置32GB共享内存避免数据加载问题,并安装必要的框架OpenCV组件。数据集采用COCO2017标注格式,包含归一化坐标的YOLO标签文件。通过可视化脚本验证标注准确性后,提出多数据集融合训练策略以增强模型泛化能力。最后使用Ultralytics框架启动训练,展现了从环境搭建到模型训练的完整技术路径。该方案兼顾检测 阅读详情

      有些事情做多了就有了通用方法,对于android中activity的管理总结,基本逻辑:用Stack(堆栈)管理activity实例,在堆栈里添加,结束,获取Activity,到程序退出时结束所有activity非常方便。

      实现与优化,一个应用程序Activity管理类:AppManager。一个应用程序Activity的基类Baseactivity继承activity,生命周期函数里面调用APPManager的方法。以后所有的activity都可以继承Baseactivity。

代码:AppManager

package net.oschina.app;

import java.util.Stack;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

/**
 * 应用程序Activity管理类:用于Activity管理和应用程序退出
 * @version 1.0
 */
public class AppManager {
	
	private static Stack<Activity> activityStack;
	private static AppManager instance;
	
	private AppManager(){}
	/**
	 * 单一实例
	 */
	public static AppManager getAppManager(){
		if(instance==null){
			instance=new AppManager();
		}
		return instance;
	}
	/**
	 * 添加Activity到堆栈
	 */
	public void addActivity(Activity activity){
		if(activityStack==null){
			activityStack=new Stack<Activity>();
		}
		activityStack.add(activity);
	}
	/**
	 * 获取当前Activity(堆栈中最后一个压入的)
	 */
	public Activity currentActivity(){
		Activity activity=activityStack.lastElement();
		return activity;
	}
	/**
	 * 结束当前Activity(堆栈中最后一个压入的)
	 */
	public void finishActivity(){
		Activity activity=activityStack.lastElement();
		finishActivity(activity);
	}
	/**
	 * 结束指定的Activity
	 */
	public void finishActivity(Activity activity){
		if(activity!=null){
			activityStack.remove(activity);
			activity.finish();
			activity=null;
		}
	}
	/**
	 * 结束指定类名的Activity
	 */
	public void finishActivity(Class<?> cls){
		for (Activity activity : activityStack) {
			if(activity.getClass().equals(cls) ){
				finishActivity(activity);
			}
		}
	}
	/**
	 * 结束所有Activity
	 */
	public void finishAllActivity(){
		for (int i = 0, size = activityStack.size(); i < size; i++){
            if (null != activityStack.get(i)){
            	activityStack.get(i).finish();
            }
	    }
		activityStack.clear();
	}
	/**
	 * 退出应用程序
	 */
	public void AppExit(Context context) {
		try {
			finishAllActivity();
			ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
			activityMgr.restartPackage(context.getPackageName());
			System.exit(0);
		} catch (Exception e) {	}
	}
}
BaseActivity:

package net.oschina.app.ui;

import net.oschina.app.AppManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;

/**
 * 应用程序Activity的基类
 * 
 * @version 1.0
 * @created 2012-9-18
 */
public class BaseActivity extends Activity {

	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		allowFullScreen = true;
		// 添加Activity到堆栈
		AppManager.getAppManager().addActivity(this);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();

		// 结束Activity&从堆栈中移除
		AppManager.getAppManager().finishActivity(this);
	}

	

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK && view != null) {
			view.onKeyDown(keyCode, event);
			if (!allowDestroy) {
				return false;
			}
		}
		return super.onKeyDown(keyCode, event);
	}
}





告别串口助手!手把手教你用Matlab直接读取STM32的传感器数据(附完整代码) 本文详细介绍了如何利用Matlab直接与STM32进行串口通信,实现传感器数据的实时采集与分析。通过完整的代码示例系统架构设计,帮助开发者告别传统的串口助手工具链,打造高效、自动化的数据采集系统。文章涵盖了从硬件配置、通信协议设计到Matlab数据处理与可视化的全流程,特别适合嵌入式开发与数据分析结合的实践场景。 阅读详情

相关推荐

【华为OD机试真题】282、求满足条件的最长子串的长度 | 机试真题+思路参考+代码分析 (C++、Java、Py、C语言、JS)

题目描述 >给定一个字符串,只包含字母数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求: >  1、只包含1个字母(a~ z,A~Z), 其余必须是数字; 2、字母可以在子 串中的任意位置; >  如果找不到满足要求的子串,如全是字母或全是数字,则返回-1

KJ.JK 1万+

应用程序Activity管理类:用于Activity管理应用程序退出

工具类package org.lmw.tools.kd.tools;import java.util.List; import java.util.Stack;import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import android.content.I

SharkChao的专栏 541

Windows11上pip安装IsaacSim5.1.0与IsaacLab

本文详细介绍了CUDA Toolkit 12.8.0、IsaacSimIsaacLab的安装过程。首先从NVIDIA官网下载并安装CUDA Toolkit 12.8.0,然后通过miniforge创建conda环境(env_isaacsim)安装IsaacSim相关Python包,解决了Windows长路径问题。成功运行IsaacSim后,克隆IsaacLab仓库并完成安装验证,最后通过创建空场景测试环境配置。整个安装过程包含详细的命令行操作问题解决方法,为机器人仿真开发环境搭建提供了完整指导。

拥抱具身智能,昇腾Ascend C 339

Android Activity管理类,用于Activity管理应用程序退出

/** * 应用程序Activity管理类:用于Activity管理应用程序退出 * * @version 1.0 * @created 2012-3-21 */ public class AppManager { private static Stack&lt;Activity&gt; m_stack_activity; private static AppManager m...

沧海龙腾LV的博客 1769

框架层理解Activity生命周期

框架层理解Activity生命周期 1 生命周期图 2主要类图调用 上面类图关系中包含两个进程,一个是应用程序进程,另一个是AMS进程,所以会涉及到进程间通信,android进程间通信用的是Binder通信。 2.1 客户进程 Ø        ActivityThread 可以看到该类有一个main方法,其实它是android一个应用程序的入口,每启动一个应用进程

fe学习之旅 1994

Android程序完全退出的三种方法

很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现。 首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看Android开发网是如何实现的吧. 1. Dalvik VM的本地方法 android.os.Proces...

weixin_30765505的博客 187

Android开发 从多个Activity返回到第一个Activity时如何实现“再按一次退出程序”

测试效果: 一、准备工作: 1.继承类BaseActivity: public class BaseActivity extends Activity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //某一个Activity放在管理的栈里 AppManager.getA

彬sir哥的博客 780

Android应用开发完全退出程序的通用方法!!!

大家好,好久不见了,今天给大家分享的是Android应用开发完全退出程序的通用方法,以前我在网上收了几种方法,但都不能通用,比如:任务管理器方法(ActivityManager):首先要说明该方法运行在Android 1.5 - 2.1 才可以(不过蛮好用的撒!),2.2以后就不行了,同时需要加如下权限:用法只有如下两行代码:ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE); am.resta

Android_Tutor的专栏 5万+

Android退出退出所有Activity通用类,ActivityManager

Android项目,退出程序时,有时不能退出所有的activity,这时我们就需要在退出时,关闭所有的activity。思路:当activity创建的时候把当前的Activity对象存放起来,等到退出的时候,关闭所有的Activity。为此,写了一个MyApplication类,用于存放所有的Activity。代码如下: import java.util.Linked...

dcqxxx0916的博客 107

android关闭全部activity,Android退出时关闭所有Activity的方法

Android退出时,有的Activity可能没有被关闭。为了在Android退出时关闭所有的Activity,设计了以下的类://关闭Activity的类public class CloseActivityClass{public static List activityList = new ArrayList();public static void exitClient(Context ct...

weixin_42526310的博客 2538

android怎样退出程序,Android应用开发完全退出程序的通用方法

在开发一个android应用时,有可能有N个Activity,而在每个Activity里的菜单里有个"退出程序"菜单,这里就要完全退出程序了,所以今天给大家分享的是Android应用开发完全退出程序的通用方法,以前使用的几种方法,都不能通用,比如:任务管理器方法(ActivityManager):首先要说明该方法运行在Android 1.5 - 2.1 才可以(不过蛮好用的撒!),2.2以后就不行...

weixin_39773158的博客 459

activity退出方式

为什么要写这篇文章?  网上有很多种退出方法,可实际上很多方法都不通用(在某个版本下可用,到了另一个版本就不行),或者方法的实际效果根本就其描述不符(也不知道那些发帖的人测没测试过)。  但我们的需求又确实存在。在某些情况下,我们需要在应用中打开多个Activity,但如果仅仅使用finish()方法就不能在需要的时候达到一次性退出的效果,自己作为一个Android退出问题的受害者,

u014250518的博客 627

Android退出退出所有Activity通用类,ActivityManager 以及退出的dialog

Android项目,退出程序时,有时不能退出所有的activity,这时我们就需要在退出时,关闭所有的activity。思路:当activity创建的时候把当前的Activity对象存放起来,等到退出的时候,关闭所有的Activity。为此,写了一个MyApplication类,用于存放所有的Activity。代码如下:import java.util.LinkedList; import ja

dongshuai1991的专栏 1246

2015高职院校移动互联网应用软件开发赛准备小结

教育部高职院校移动互联网应用软件开发赛项上海赛区赛项规程

f5647的专栏 1726

开发日志—详细的链接服务器代码(登录)

进行链接服务器 ,输入密码账号,登录页面 是基本APP都有的功能,总结了下:过         用户登陆界面 /** * @author think *用户登陆界面 */ public class LoginUi extends Activity implements HttpCallBack{ private EditText emailET; private EditTex

f5647的专栏 1649

android ViewPager详解

Viewpager 在android界面布局中属于常用类型 ,它可以做导航,页面菜单,进入软件是的欢迎界面 等等。比现在最流行的几款手机软件  ,QQ,微信,微博 等 ,其主界面 都用到了ViewPager,所以学好它,势在必得 ,在这里总结了下,     先用图解 :                        这是一个仿微博界面的xml布局 ,他们之间的关系经常搞混淆,怕记不住 ,

f5647的专栏 1351

Android _文件下载

Android 文件下载,在Android开发中很长用到,经常需要在应用程序中下载所需要的文件比如电子书,MP3格式的音乐文件,电影等。我在这里总结了一下,以后要用时可以直接拷贝, 代码分析:   有两个工具类,HttpDownloader.java类中定义两个下载方法,download(String urlstr)下载纯文本文件,downfile(String urlStr,String p

f5647的专栏 1350

android_WIFI

WIFI是无线通信协议,可以允许手机直接连接到无线网络。在现在3G资费还比较贵的情况下,WIFI对于手机来说是很重要的,我们可以很方便的下载软件,音乐等资源。Android手机必须要有WIFI网卡才能支持WIFI。Android应用程序有时候需要对WIFI网卡进行操作,从而操作WIFI网络。        WIFI网卡有一些状态,由一系列的整形常量来表示。 常量名 常量值

f5647的专栏 1240

Android 数据存储

Android 数据存储       关于Android开发时涉及到的数据存储有好几种,在这里,我总结了四种在开发中常用 的存储方法,有SQLite数据库存储,contentprovider,contentprovider,File存储。对于简单的sharedpreferences存储File存储就简述,而SQLite数据库存储contentprovider者详细记录。   第一种:SQL

f5647的专栏 1193

android_Socket

Socket简介       Socket(套接字)是一种抽象层,应用程序通过它来发送接收数据,就像应用程序打开了一个文件句柄,将数据读写到稳定的存储器上一样。使用Socket可以将应用程序添加到网络中,并与处于同一网络中的其他应用程序进行通信。一台计算机上的应用程序向socket写入的信息能够被另一台计算机上的另一个应用程序读取,反之依然。根据不同的的底层协议实现,也会很多种不同的Soc

f5647的专栏 1080

android 服务器操作类

简单 方便  /** * @author think *以同步方式发送Http请求 */ public class ApacheHttpClient { /** * @return * */ public String httpGet(String uri) { String response=null;//响应

f5647的专栏 1038

上市公司企业政府补助数据集(2007-2023年).txt

因文件较多,数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143822266

行业分类-设备装置-青少年教学娱乐科普楼.zip

行业分类-设备装置-青少年教学娱乐科普楼

上一篇: 2015高职院校移动互联网应用软件开发赛准备小结
下一篇: android 图像处理
冯晓龙
博客等级 码龄13年 15粉丝 44原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值