谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多。

在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法。完成之时,无意在网 上看到的可以使用广播机制退出Activity。看了一部分人的博客、文章等教程,发现也是摘抄的“很随便”,说的不详细,或不能实现。

看了他们的意思,写了demo,大家看看吧。主要代码如下:(不方便看的直接下整个工程)

为了代码的简洁性,抽取出一个基类BaseActivity(自定义的,当然,你也可以不写这个基类,只要在你项目的每个Activity里实现其中的代码即可),让你代码中要关闭的Activity都继承这个BaseActivity。

  1. public class BaseActivity extends Activity {
  2. protected BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
  3. @Override
  4. public void onReceive(Context context, Intent intent) {
  5. finish();
  6. }
  7. };
  8. @Override
  9. public void onResume() {
  10. super.onResume();
  11. // 在当前的activity中注册广播
  12. IntentFilter filter = new IntentFilter();
  13. filter.addAction("ExitApp");
  14. this.registerReceiver(this.broadcastReceiver, filter);
  15. }
  16. @Override
  17. protected void onDestroy() {
  18. // TODO Auto-generated method stub
  19. super.onDestroy();
  20. this.unregisterReceiver(this.broadcastReceiver);
  21. }
  22. }

在你要关闭的Activity里添加myExit()方法,然后在要进行退出程序操作的地方调用myExit()方法就行。

  1. ublic class Activity1 extends BaseActivity {
  2. private Button btn1;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. // TODO Auto-generated method stub
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.a1);
  8. btn1 = (Button)findViewById(R.id.btn1);
  9. btn1.setOnClickListener(new View.OnClickListener() {
  10. @Override
  11. public void onClick(View v) {
  12. Intent i = new Intent(Activity1.this, Activity2.class);
  13. startActivity(i);
  14. }
  15. });
  16. }
  17. /**
  18. * 捕获手机物理菜单键
  19. */
  20. private long exitTime = 0;
  21. @Override
  22. public boolean onKeyDown(int keyCode, KeyEvent event) {
  23. if(keyCode == KeyEvent.KEYCODE_BACK){//&& event.getAction() == KeyEvent.ACTION_DOWN
  24. if((System.currentTimeMillis()-exitTime) > 2000){
  25. Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
  26. exitTime = System.currentTimeMillis();
  27. } else {
  28. myExit();
  29. }
  30. return true;
  31. }
  32. return super.onKeyDown(keyCode, event);
  33. }
  34. protected void myExit() {
  35. Intent intent = new Intent();
  36. intent.setAction("ExitApp");
  37. this.sendBroadcast(intent);
  38. super.finish();
  39. }
  40. }

整个项目工程:

Android中使用广播机制退出多个Activity的更多相关文章

  1. Android 中的广播机制

    Android 中的广播机制 Android 中的广播,按照广播响应范围,可以分为应用内广播和全局广播.按照广播的接收方式,可以分为标准广播和有序广播. 广播的分类 响应范围 应用内广播:此类广播只能 ...

  2. Android中的广播Broadcast详解

    今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低.开机.锁屏等一些操作都会发送 ...

  3. 重温Android中的消息机制

    引入: 提到Android中的消息机制,大家应该都不陌生,我们在开发中不可避免的要和它打交道.从我们开发的角度来看,Handler是Android消息机制的上层接口.我们在平时的开发中只需要和Hand ...

  4. Android中的广播

    Android中的广播 广播接受器,可以比喻成收音机.而广播则可以看成电台. Android系统内部相当于已经有一个电台 定义了好多的广播事件,比如外拨电话 短信到来 sd卡状态 电池电量变化... ...

  5. 谈谈对Android中的消息机制的理解

    Android中的消息机制主要由Handler.MessageQueue.Looper三个类组成,他们的主要作用是 Handler负责发送.处理Message MessageQueue负责维护Mess ...

  6. Android中Alarm的机制

    本次给大家分析的是Android中Alarm的机制所用源码为最新的Android4.4.4.首先简单介绍如何使用Alarm并给出其工作原理,接着分析Alarm和Timer以及Handler在完成定时任 ...

  7. 浅析Android中的消息机制(转)

    原博客地址:http://blog.csdn.net/liuhe688/article/details/6407225 在分析Android消息机制之前,我们先来看一段代码: public class ...

  8. 浅析Android中的消息机制(转)

    在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...

  9. Android中的Parcel机制 实现Bundle传递对象

    Android中的Parcel机制    实现了Bundle传递对象    使用Bundle传递对象,首先要将其序列化,但是,在Android中要使用这种传递对象的方式需要用到Android Parc ...

随机推荐

  1. C++中的仿函数,std::function和bind()的用法

    1.仿函数:又叫std::function,是C++中的一个模板类 2.C语言中的函数指针: int  add(int a,int b) { return a+b; } typedef int (*f ...

  2. Version of SQLite used in Android?

    sing the emulators (adb shell sqlite3 --version): SQLite 3.7.11: 19-4.4-KitKat 18-4.3-Jelly Bean 17- ...

  3. Android 开发 res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)

    (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854) (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x ...

  4. 生鲜电商的O2O之道

  5. 3144:[HNOI2013]切糕 - BZOJ

    题目描述 Description 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑且和谐.于是她找到你,希望你 ...

  6. IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程

    一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 ...

  7. JavaScript高级---装饰者模式设计

    一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生 ...

  8. linux源代码阅读笔记 linux文件系统(转)

    linux文件系统:   操作系统的文件数据除了文件实际内容外,还有非常多的属性,如文件权限(rwx)与文件属性(所有者.群组.时间参数等).   文件系统通常将这两部分数据存放在不同的块.权限属性放 ...

  9. zoj 3232 It's not Floyd Algorithm(强联通分量,缩点)

    题目 /******************************************************************/ 以下题解来自互联网:Juny的博客 思路核心:给你的闭包 ...

  10. 【leetcode】Majority Element (easy)(*^__^*)

    Given an array of size n, find the majority element. The majority element is the element that appear ...