android学习——退出整个应用程序

将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。

package com.example.Emotional.util;

import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.Application; 

/**
 *
* 类名称:SysApplication
* 类描述:   退出整个应用程序的类
* 创建时间:2014-4-25 下午1:58:00
* 修改备注:
* @version
*
 */

public class SysApplication extends Application { 

    private List<Activity> mList = new LinkedList<Activity>();
    private static SysApplication instance; 

    private SysApplication() {}
    public synchronized static SysApplication getInstance() {
        if (null == instance) {
            instance = new SysApplication();
        }
        return instance;
    }
    // add Activity
    public void addActivity(Activity activity) {
        mList.add(activity);
    } 

    public void exit() {
        try {
            for (Activity activity : mList) {
                if (activity != null)
                    activity.finish();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.exit(0);
        }
    }
    public void onLowMemory() {
        super.onLowMemory();
        System.gc();
    }
}

在硬退出按钮点击时

//点击硬退出按钮
    public void clickQuitDialog() { 

            AlertDialog.Builder builder = new Builder(FirstActivity.this);
            builder.setMessage("确定要退出吗?");

//          builder.setTitle("提示");
            builder.setPositiveButton("确认",new android.content.DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
//                        FirstActivity.this.finish();
//                        System.exit(0);
                        SysApplication.getInstance().exit();
                    }
                });
            builder.setNegativeButton("取消",new android.content.DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
            builder.create().show();
        } 

        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

            //event.getRepeatCount() == 0 防止重复点击
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
                clickQuitDialog();
                return false;
            }
            return false;
        }
 
时间: 2024-11-13 08:35:27

android学习——退出整个应用程序的相关文章

Android 怎么退出整个应用程序?

我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源.有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽. 后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附代码:public boolean onCreateOptionsMenu(Menu menu){ su

Android 学习笔记 4 安卓程序结构及重要的程序文件

在创建一个Android程序时,ADT会自动创建一些目录和文件.这些目录和文件有固定的作用.我们的项目一般是在这些文件中进行修改和添加.因此,了解这些文件和目录,对Android开发有着非常重要的作用. 这些目录和文件有其固定的作用,有的允许修改,有的不能修改. 5个较为重要的文件夹src.gen.assets.bin和res. src目录是源代码目录,所有允许用户修改的java文件和添加的java文件都保存在这个目录中 . 在这里,HelloAndroid工程建立初期,ADT根据工程向导中的“

Android完全退出应用程序,完美解决方案

最近公司工作不是很忙,就抽空研究了下Android的引导页,但是在写完引导页并且进入到住页面之后,在退出时,采用"再按一次退出"的方式去实现的,用的方式是杀掉进程跟exit,即:android.os.Process.killProcess(android.os.Process.myPid())或者System.exit(0); 但是问题出现了,因为我在进入引导页Activity跟主界面Activity之前我是还有一个欢迎页Activity的(注:这个入口Activity的作用是判断此应

Android学习笔记-Android应用程序初步认识

一直觉得自己的技术没有一门专长,似乎什么都会一点,但是却一点都不深入.决定学习Android的开发,说不出的理由,希望自己能够坚持下去. 其实之前已经搭建好了Android的开发环境eclipse+ADT+SDK,这里就不做具体介绍了,个人觉得还是非常有必要把这3个软件单独安装一下, 这样对开发工具能有个系统的认识.Eclipse是一个IDE,针对多门开发语言都能够使用,SDK是针对Android应用开发提供的一个框架,其中有开发 过程中使用到的包和一些集成的工具,ADT是安装在eclipse上

一、 Android完全退出应用程序

在Android中,如果想退出Android程序,一般都是调用finish().System.exit(0).android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish().System.exit(0).android.os.Process.killProcess(android.os.Process.myPid())只能杀死当前的act

Android学习笔记(十七)——使用意图调用内置应用程序

使用意图调用内置应用程序 1.创建一个新的Android项目并命名为Intents,在main.xml文件中添加两个Button: <Button android:id="@+id/btn_webbrowser" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="onClickWebBrowser&quo

Android学习——在Android中使用OpenCV的第一个程序

刚开始学习Android,由于之前比较熟悉OpenCV,于是就想先在Android上运行OpenCV试试 =================================================================================== 1.环境配置 JDK Eclipse ADT CDT Android SDK Android NDK cygwin OpenCV for Android 2.4.9 这部分网上很多,我就不再赘述了,可以参考:http://bl

android 完美退出应用程序。

http://www.2cto.com/kf/201402/276808.html Android 程序在点击回退键时,如果只有一个activity,调用finish()方法就能退出界面,如果有多个界面,在调用该方法时,只会销毁当前的activity,显示栈顶的其它activity,换言之,就是无法退出整个应用程序.下面是一种快速的退出整个应用的方法代码: private void showTips() { AlertDialog alertDialog = new AlertDialog.Bu

Android学习-应用程序管理

Android学习-应用程序管理 在前段时间,公司要求做一个Android系统的应用程序管理,要实现卸载程序.清除数据.停止正在运行的服务这几大模块,现在将代码粗略总结如下: 主要运用到的类有 PackageManager ActivityManager ApplicationInfo RunningServiceInfo Method 还有两个android.pm下的源文件用于生成桩,IPackageStatsObserver.java  和 IPackageDataObserver.java