您的位置:首页 > 移动开发 > Android开发

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

2013-04-24 16:48 429 查看
本文转载自:http://blog.sina.com.cn/s/blog_90cdca4c01016gzt.html

感谢作者的贡献

我们在写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并退出应用程序。

附代码:

import java.util.LinkedList; 

import java.util.List; 

import android.app.Activity; 

import android.app.AlertDialog; 

import android.app.Application; 

import android.content.DialogInterface; 

import android.content.Intent; 

 

public class SysApplication extends Application { 

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

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: