Android 使用单例模式退出整个应用程序(转)

转:http://blog.csdn.net/sunnyfans/article/details/7688092

我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源。有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。

后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附代码:

public boolean onCreateOptionsMenu(Menu menu)
{

super.onCreateOptionsMenu(menu);
MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit");
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()
{
public boolean onMenuItemClick(MenuItem item)
{
System.exit(0);
return true;
}
});
return true;
}

想到这样太不方便了,每次退出界面之后应用程序还在运行,今天查了下资料终于把这个问题给解决了,
网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。

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();
    }
}

在应用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)
如:

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this);
}
时间: 2024-12-04 21:10:38

Android 使用单例模式退出整个应用程序(转)的相关文章

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

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

Android之完美退出方法

为什么要写这篇文章? 网上有很多种退出方法,可实际上很多方法都不通用(在某个版本下可用,到了另一个版本就不行),或者方法的实际效果根本就和其描述不符(也不知道那些发帖的人测没测试过). 但我们的需求又确实存在.在某些情况下,我们需要在应用中打开多个Activity,但如果仅仅使用finish()方法就不能在需要的时候达到一次性退出的效果,自己作为一个Android退出问题的受害者,通过良久思考和实际测试,找到了一个比较不错的,在2.1-2.2-2.3版本下都通用的完全退出方法(2.1版本也基本可

android开发完全退出activity

我们退出Activity可以调用:finish(),system(0),但是这些都只是单单退出单个Activity 也有人会说,直接把进程杀死,这些做法都不是很可取,其实我们翻看api可以发现,Activity 都是放入stack中管理,我们只要把stack清空了,不就完全退出了嘛.要对Activity的stack 管理,就需要了解launchMode的四种状态,这里就不多说了,自己看看api. 我们就利用android:launchMode="singleTop",当该Activit

Android 创建单例模式的几种方法

java模式之单例模式:单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例.特点:1,一个类只能有一个实例2,自己创建这个实例3,整个系统都要使用这个实例 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在.在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作.一些资源管理器常常设计成单例模式.外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中.每台计算

Android经典完美退出方法

Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解.易于操作,非常不错! AppUtils类(储存每一个Activity,并实现关闭所有Activity的操作) /* * To change this template, choose Tools | Templates * and open the template in the

Android 一次退出所有activity的方法

转自:http://bbs.51cto.com/thread-970933-1.html 因为android的API中没有提供一次性退出的接口所以想要在多activity的程序里面一次性退出的话就要费点功夫了.我是在一个单例对象里面记录activity栈中activity的引用然后在需要退出时遍历一遍finish()掉就可以了.实现步骤如下:1.创建一个单例对象 package com.exit; import java.lang.ref.SoftReference;import java.ut

android 应用常见退出方法

对于初学者来讲,android应用的退出有时候挺让人头疼,下面简单总结几种常见的退出方法: 大的方向,退出思路无非就是将程序所有activity进行销毁,思路清晰了,就看使什么招了- 1.制造抛异常导致整个程序退出  2.将所有的activity放入到一个list中,然后在需要退出的时候,将所有的activity,finish掉  3.通过广播来完成退出功能 1.制造抛异常导致整个程序退出: 详见http://blog.csdn.net/liuhe688/article/details/6584

Android使用AndEngine创建第一个程序

首先要把andengine.jar复制到libs文件夹里 01 package com.hu.anden; 02   03 import org.anddev.andengine.engine.Engine; 04 import org.anddev.andengine.engine.camera.Camera; 05 import org.anddev.andengine.engine.options.EngineOptions; 06 import org.anddev.andengine.

Android入门(五):程序架构——MVC设计模式在Android中的应用

刚刚接触编程的的人,可能会这样认为:只要代码写完了能够跑起来就算完工了.如果只是写一个小程序,“能够跑起来”这样的标准也就可以了,但是如果你是在公司进行程序的开发,那么仅仅让程序成功的跑起来是不行的,事情远没有你想的这么简单.一个商业项目的代码少则数万行,多则上百万甚至更多,这种商业项目不可能仅仅靠一个人完成,要想高效高质量的完成开发工作,就需要一个专业的开发团队了.在团队中,有人负责项目的架构设计,有些人负责程序代码的编写….要想像这样做到项目开发的分工就必须在程序的结构上做适当的安排. 举个