随时结束程序

实验名称:随时结束程序

实验需求:back键可能需要按很多次,home键只是将程序暂时挂起

实验现象:在第3个活动

实验思路:设置一个专门的集合类对所有的活动进行管理。

步骤:

1、新建一个项目,创建3个活动,活动可以通过button切换

2、新建一个ActivityCollector类作为活动管理器

  1. public class ActivityCollector {
  2. public static List<Activity> activities=new ArrayList<>();
  3. public static void addActivity(Activity activity){
  4. activities.add(activity); //用于向list中添加活动
  5. }
  6. public static void removeActivity(Activity activity) {
  7. activities.remove(activity); //用于从list中移除活动
  8. }
  9. public static void finishAll() {
  10. for(Activity activity:activities){
  11. if(!activity.isFinishing()){
  12. activity.finish(); //将list中存储的活动全部销毁掉
  13. }
  14. }
  15. }
  16. }

3、新建一个BaseActivity作为项目中活动的继承类,

  1. public class BaseActivity extends AppCompatActivity{
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState){ //获取实例的类名
  4. super.onCreate(savedInstanceState); //保存实例类名
  5. Log.d("BaseActivity",getClass().getSimpleName()); //打印
  6. ActivityCollector.addActivity(this); //调用ActivityCollerctor中的addActivity方法
  7. }
  8. //@Override
  9. protected void onDestory(){
  10. super.onDestroy();
  11. ActivityCollector.removeActivity(this);
  12. }
  13. }

4、修改第3个活动的按键事件

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_main3);
  5. Button button=(Button) findViewById(R.id.button3);
  6. button.setOnClickListener(new View.OnClickListener() {
  7. @Override
  8. public void onClick(View view) {
  9. ActivityCollector.finishAll();//销毁该项目的所有活动
  10. }
  11. });
  12. }

5、运行程序

附件列表

时间: 2024-10-20 06:26:22

随时结束程序的相关文章

结束程序员对编程的恨

用笔者的经历现身说法,编程的确是一件需要极大.极大耐心的活儿.加上使用的是Emacs编辑器(谢谢老顾的建议和他的耐心:D),会犯更多的小错误,解决起来也更加令人烦恼.耐心很重要.对于第五条,也比较赞同,笔者已经习惯了遇到错误去百度一下错误代码,同时会浏览一下相关的错误例子以及原因,学习很快.最后一条同样重要,周围的很多同学,遇到一点小问题就跑到论坛问老师,个人很反感.我想:在现在这个阶段,只要你想,应该没有你不可能独立解决的问题. 每个人刚开始的编程技术都不理想,所以我们决定列出一张清单,写上大

Application.Exit()结束程序,但线程还在的解决方法。

Application.Exit()结束程序,但线程还在的解决方法. 出现此情况大多原因是使用了多线程编程,或者你所调用的dll使用了多线程.我们知道,一般情况下的线程执行完指定的任务之后是会关闭了的,但是如果对于一些循环类线程,或者忘记关掉的线程时,这个时候就需要我们手动将之强制关闭.用以下三个中的一个即可尝试强制关闭线程. 复制内容到剪贴板 代码: Application.ExitThread();//退出当前线程上的消息循环,并关闭该线程上的所有窗口.    复制内容到剪贴板 代码: Sy

iphone编程,使用代码结束程序

(ios 4环境) 1.使用代码可以结束自己只有一种方式,而且apple不建议这样用,就是调用exit()函数.在2.0以前uiapplication类中有一个方法可以调用,但是现在已经没有了,而且如果你强制使用2.0以前的编译环境,apple会拒绝你发布这个程序到app store. 2.用户按下home键后,程序转入后台运行. 3.连续按两次home键后,在iphone屏幕下面会出现一个程序列表,这个列表,我原先以为是转入后台运行的程序列表,通过试验结果看到,我错了,这个只是最近使用的程序列

java,从键盘输入个数不确定的整数,并判断输入的正数和负数的个数,输入0时结束程序。

package study01; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //正数的个数 int count1 = 0; //负数的个数 int count2 = 0; int input = sc.nextInt(); while (input != 0) { if (input > 0)

Java_I/O输入输出_实现当用户输入姓名和密码时,将每一个姓名和密码加在文件中,如果用户输入done,就结束程序。

import java.io.*; public class Example { static final int lineLength = 81; public static void main(String[] args) { FileOutputStream fos; byte[] phone = new byte[lineLength]; byte[] name = new byte[lineLength]; try { fos = new FileOutputStream("word.

[php] 编写接口的规范

一. 接口按请求人可以分为两种: 一种是被其他内部项目调用的接口(包括js异步请求的接口和定时程序). 另一种是对外的接口,主要提供给外部开发者调用的. 两种接口最大区别就是,内部接口不需要太严格的身份验证,而对外接口需要严格的身份验证,加密解密方式各种各样,其中最常见最简单的就是http basic验证,例如我们的大后台弹出的账号和密码弹窗 就是用了basic验证,输入账号和密码才能通过验证.但是如果内部接口涉及到重要的操作,不希望被他人恶意请求的话,还是要做一点加密验证的. 二. 无论是哪一

exit()和return的区别

exit()和return的区别: 按照ANSI C,在最初调用的main()中使用return和exit()的效果相同. 但要注意这里所说的是“最初调用”.如果main()在一个递归程序中,exit()仍然会终止程序:但return将 控制权移交给递归的前一级,直到最初的那一级,此时return才会终止程序.return和exit()的另一个区别 在于,即使在除main()之外的函数中调用exit(),它也将终止程序. _exit()与exit的区别: 头文件: exit:#include<s

Linux-进程描述(5)之进程环境

main函数和启动例程 当内核使用一个exec函数执行C程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序将此例程指定为程序的起始地址.启动例程从内核获取命令行参数和环境变量,然后为调用main函数做好准备.我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件: 1 $ gcc -S main.c 2 $ gcc -c main.s 3 $ gcc main.o -S 选项生成汇编代码, -

exit与return的深入辨析

 1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统:而return 是退出当前函数,返回函数值,把控制权交给调用函数. 2. exit是系统调用级别,它表示一个进程的结束:而return 是语言级别的,它表示调用堆栈的返回. 3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程.exit将删除进程使用的内存空间,同时把错误信息返回给父进程. 4. void exit(int status); 一般statu