`
yangwei0915
  • 浏览: 460678 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android 程序退出的办法

阅读更多

在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序:

ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());

 

此种方法是一种最方便和最简单的退出程序的办法,但是在2.2和2.2之后就不能用了,那么如果我们要退出程序有4种办法:

  1. 采用content view栈:如果程序是多界面,但是又没有强制要求每一个界面一个Activity,可以将每个界面设计为一个View,在界面切换时,只需要调用Activity的setContentView方法设置Activity的Contentview,这样退出程序只需要将这一个Activity退出 就可以了,但是需要设计一个栈来管理content view。
  2. 可以自定义一个Activity的栈,在程序退出时将栈中的所有的Activity进行finish,这种方法,我以前的文章中有详述。
  3. 前两种方法的精髓之处都是需要自己设计一个栈用来管理界面或者Activity,这样程序就比较复杂一些。 第3中方法就是,先让程序到Home界面,然后再将process杀死:代码如下:
    	Intent intent = new Intent(Intent.ACTION_MAIN);
    				intent.addCategory(Intent.CATEGORY_HOME);
    				intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    				startActivity(intent);
    				android.os.Process.killProcess(Process.myPid());
  4. 还有一种就是使用方法是使用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);

 

分享到:
评论
8 楼 happy9837457 2014-03-05  
第三种方法能退出,但是再次打开客户端,竟然是旧的页面!堆栈根本没清除
7 楼 youyoufei 2014-02-15  
试了第3种方法,还挺好用的,Process.myPid();直接这样写可能会报错,改成android.os.Process.myPid();就没问题了
6 楼 yangwei0915 2012-11-27  
dictator_昌 写道
哪种好用呢?
还有,第四种的全局变量怎么设置?(初学)

我认为第三种要好用一点。
5 楼 dictator_昌 2012-11-20  
哪种好用呢?
还有,第四种的全局变量怎么设置?(初学)
4 楼 dictator_昌 2012-11-20  
哪种好用呢?
还有,第四种的全局变量怎么设置?(初学)
3 楼 yangwei0915 2012-04-05  
是自己定义的全局变量
2 楼 cy86201885 2012-03-31  
GlobalVarable.EXIT_ACTION这个是自己定义的全局变量还是什么?
1 楼 cy86201885 2012-03-31  
正好在找这方面的,谢谢啊

相关推荐

    退出Android程序时清除所有activity的实现方法

    本文实例讲述了退出Android程序时清除所有activity的方法。分享给大家供大家参考,具体如下: 在一个项目中,要退出android程序,试了restartPackage、 killBackgroundProcesses 、通过异常并在Application的子类中...

    解析Android中如何做到Service被关闭后又自动启动的实现方法

    大部分时候,程序员也不想把软件做成流氓软件,没办法,领导说了算。 我们在使用某些Android应用的时候,可能会发现安装了某应用以后,会有一些服务也会随之运行。而且,这些服务每次都会随着手机开机而启动。有的...

    android 退出程序解决内存释放的问题

    做Android项目的时候发现一个问题:当应用程序退出了,点击”设置”查看应用程序,界面显示着可以点击”强制关闭”. 我认为造成这样的原因是还有开启的activity没有被destroy,然后做调试,之后发现开启的activity应该是...

    ANDROID 完美退出APP的实例代码

    然后在程序退出的地方调用它们的 finish()方法。使用全局变量。对了,第一个想到的就是继承 Application,代码入下: 代码如下:public class AgentApplication extends Application { private List<Activi

    Android实现双击返回键退出应用实现方法详解

    现在市面上很多应用都会有当用户按返回键的时候提示用户:再按一次将退出应用的提示,也就是双击双击返回键退出应用,接下来我们就用几种办法来实现这个功能 效果图 实现 第一种办法 响应Activity的 onKeyUp事件,两...

    Android开发资料合集-World版!

    9.11、彻底退出当前程序 212 9.12、获取应用程序的名称,包名,版本号和图标 212 9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找...

    Android 开发技巧

    9.11、彻底退出当前程序 212 9.12、获取应用程序的名称,包名,版本号和图标 212 9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找...

    android反编译(dex2jar.zip)

    1.使用命令行时,当转某个类失败时将继续,而不退出程序 2.解决读取class annotation 的一个问题 Fixes issue 42 3.rename package pxb.android.dex2jar to com.googlecode.dex2jar 4.issue 33, issue 43在启动...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...

    LeadBBS 9.2.zip

    LeadBBS,中文ASP论坛程序名称,于2002年由著名ASP程序员SpiderMan等编写而成。在论坛兴盛的2002-2005年曾经风靡一时,LEADBBS以其短小精干、运行速度快而受到广大网站建设者,特别是个人网站的欢迎。许多论坛,特别...

    APKTool批处理版l

    一般而言,一个编写规范的Android程序,会把所有字符串资源都分离出来,放在values的strings.xml文件中,values目录中存放的是默认语言字符串资源(一般为英文)。APK程序在处理字符串资源时会先判断语言环境,然后...

    学生公寓管理系统课程设计CSDN下载频道.doc

    可行性研究 并不是所有问题都有合理地解决办法,事实上许多问题不可能在预定地系统规模之内解决 .如果问题没有可行地解决,那么花费在这项开发工程上地任何时间、资源、人力和经费 都是无谓地浪费. 对于软件设计而言,...

Global site tag (gtag.js) - Google Analytics