`

android 彻底关闭应用程序(back按键)

阅读更多

在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。
我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy()里强制退出应用,或直接杀死进程,具体操作代码如下:

@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		
		//按下键盘上返回按钮
		if(keyCode == KeyEvent.KEYCODE_BACK){
						finish();
			return true;
		}else{		
			return super.onKeyDown(keyCode, event);
		}
	}
 
 
	@Override
	protected void onDestroy() {
		super.onDestroy();
		
		System.exit(0);
		//或者下面这种方式
		//android.os.Process.killProcess(android.os.Process.myPid()); 
	}



但是经过测试在2.1版本以前,我们可以使用如下方法来退出应用:
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);  
am.restartPackage(getPackageName());  


但是在2。2之后这种方法就不灵光了,个人以自己开发经验来讲,经常用的是自己创建一个列表来保存每次新生成的Activity实例,在想退出程序时,调用一个循环来进行全部的finish操作,今天在浏览网页时,发现一个兄弟用了找个方法,还没来得及测试下效果,各位看到这篇文章的可以测试下,然后反馈一下结果给我,呵呵,我这几天没时间进行测试,拜托,拜托:
方法就是:

使用Android的Broadcast机制。在所有的Activity中注册退出程序的消息,当收到消息时调用finish方法。然后再有退出程序功能的Activity上广播关闭消息。
代码如下:
package com.kingtone.activity;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
 * 所有Activity的父类,用来注册退出程序的广播事件,
 * 并且对收到的退出程序事件进行处理
 * @author Administrator
 *
 */
public class CommonActivity  extends Activity {
	
    //广播的内部类,当收到关闭事件时,调用finish方法结束activity
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        //在当前的activity中注册广播
        IntentFilter filter = new IntentFilter();
        filter.addAction(GlobalVarable.EXIT_ACTION);
        this.registerReceiver(this.broadcastReceiver, filter);
    }
}



在需要退出程序的Activity(CommonActivity的子类)中,退出程序代码如下:
Intent intent = new Intent();
intent.setAction(GlobalVarable.EXIT_ACTION); // 退出动作
this.sendBroadcast(intent);// 发送广播
super.finish();
//退出后台线程,以及销毁静态变量
System.exit(0);

分享到:
评论
1 楼 ivanhxy 2011-08-16  
看了您的几篇文章,都写得挺好的。有空到Touch Android 论坛 指导一下我们

相关推荐

    Android应用源码之按键的处理.zip

    本资料包"Android应用源码之按键的处理.zip"显然聚焦于解析如何在Android应用程序中捕获并响应用户输入的按键操作。下面我们将深入探讨这个主题。 首先,Android系统为开发者提供了两种主要的按键事件处理方式:第...

    Android应用程序开发

    在这个平台上,开发者可以构建具有图形用户界面(GUI)的Android应用程序,而无需深入理解底层的编程语言。以下是对【快速找人游戏】这个特定应用程序开发的详细分析: 1. **界面设置**: - 应用包含两个主要界面...

    Android中实现再按一次返回键退出应用程序

    在Android应用开发中,通常我们希望用户在按下返回键时能够退出应用程序,但为了提供更好的用户体验,Android系统并不推荐直接在用户第一次点击返回键时就退出。为了实现“再按一次返回键退出应用程序”的功能,我们...

    back按键的监听事件

    本篇将深入探讨如何在Android应用中实现对Back按键的监听及相应处理。 首先,Android提供了两种主要的方法来监听和处理Back按键的事件:`onKeyDown()` 和 `onBackPressed()`。 1. **onKeyDown() 方法**: - `...

    2.8 自定义BACK按键

    在Android系统中,BACK按键是用户界面的重要组成部分,它提供了导航和退出应用的功能。然而,有时开发者可能需要根据...通过以上方法,你可以自由地控制Android应用中的BACK按键行为,为用户提供更个性化的交互体验。

    android处理键盘事件之物理按键(屏蔽后退键)

    Android设备通常配备多个物理按键,包括返回键,这对于应用的导航至关重要。然而,在某些场景下,开发者可能希望禁用或自定义这些行为,例如在游戏或全屏模式下。 首先,让我们理解Android系统如何处理物理按键事件...

    Android 处理按键的响应方式

    在Android系统中,处理按键的响应方式是开发者必须掌握的关键技能之一。这涉及到用户与设备交互的核心机制,尤其是在创建自定义用户体验时。Android为开发者提供了多种处理按键事件的方法,包括硬键和软键(虚拟键)...

    Android中获取后台正在运行的应用列表

    在Android设备中,按Back键会将当前的Activity出栈销毁,而按HOME键却会将之隐藏到后台。如若有多个这样的程序这样操作,我们不知道后台到底有多少个正在运行的应用程序。此程序的目的就列举出后台正在运行的应用...

    android 完全退出程序

    这通常涉及到理解Android应用生命周期、使用Activity管理和处理Intent等方面的知识。下面我们将详细探讨如何实现这个目标。 1. **Android 应用生命周期** Android应用由一个或多个Activity组成,每个Activity都...

    Android实现长按back键退出应用程序的方法

    本文实例讲述了Android实现长按back键退出应用程序的方法。分享给大家供大家参考。具体分析如下: 最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序。在网上查找了很多资料,发现几乎...

    Android完全退出应用demo

    在Android开发中,完全退出应用程序通常指的是关闭所有与应用相关的活动(Activities)和释放系统资源。这不仅是用户体验的一部分,也可能在某些情况下是必要的,比如在内存紧张时优化系统性能。以下是一个关于如何...

    Android应用源码之按键的处理-IT计算机-毕业设计.zip

    在Android应用开发中,按键处理是一项基础且重要的技能,尤其对于毕业设计而言,理解并掌握这一部分知识将有助于构建功能完善的移动应用。本资源提供了一个关于Android应用源码的示例,专门讲解如何处理按键事件,这...

    Android 按键映射对应表

    除了基本的按键处理,Android还支持自定义按键映射,允许开发者根据设备特性或应用需求重新定义按键的功能。例如,如果一个设备上的某个物理按键没有默认行为,开发者可以通过`AndroidManifest.xml`中的`<activity>`...

    监听BACK按键

    返回键在Android应用中扮演着重要的角色,它可以帮助用户导航回上一个活动或退出应用。本篇文章将深入探讨如何在Android项目中实现监听并处理BACK按键的点击事件。 首先,我们需要理解Android中的Activity生命周期...

    安卓广播监听按键事件和屏幕熄屏亮屏监听

    总的来说,通过BroadcastReceiver,Android应用可以方便地监听到系统中发生的各种事件,包括按键操作和屏幕状态变化。合理利用BroadcastReceiver,可以提升应用的功能性和用户体验。在实际开发中,应根据需求选择...

    Android项目源码给其他应用加锁的程序锁源代码.zip

    Android项目源码给其他应用加锁的程序锁源代码本项目是一个比较有趣的项目源码,可以给其他项目加锁,程序锁的原理是一个“看门狗”的服务定时监视顶层activity,如果activity对应的包名是之前上锁的应用程序的,则...

    密西西比河谷州立大学《Android应用程序开发》对应PPT

    根据提供的文件内容,本部分将详细说明与密西西比河谷州立大学的《Android应用程序开发》课程相关的知识点。 首先,通过网易公开课链接***,我们可以了解到密西西比河谷州立大学提供的课程可以通过网易公开课平台...

    Android代码-Android即时消息应用程序

    had a really really busy time, now i'm back for projects and have already some really really cool things under development for you so stay tuned :) Android Instant Messaging Application VIL - Very ...

Global site tag (gtag.js) - Google Analytics